Prometheus 建图、定位、规划、控制及目标检测
Prometheus
Prometheus是一套开源的自主无人机软件平台,为无人机的智能与自主飞行提供全套解决方案。本项目基于PX4开源飞控固件,旨在为PX4开发者配套成熟可用的机载电脑端程序,提供更加简洁快速的开发体验。目前已集成建图、定位、规划、控制及目标检测等模块,并配套有Gazebo仿真测试代码。
AYanBro/Prometheus - 码云 - 开源中国 (gitee.com)
代码已下载E:\[OPENSOURCE_CODE]\Prometheus-master
网络通信
// TCP client
int connect_to_drone(const char *ip, const int port)
{
int fd = socket(AF_INET,SOCK_STREAM,0);
if(fd < 0)
{
printf("Socket creation error \n");
return -1;
}
// struct timeval tcp_timeout = {0,500000};
// setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (char*)&tcp_timeout, sizeof(struct timeval));
memset(&tcp_addr,0,sizeof(tcp_addr));
tcp_addr.sin_family = AF_INET;
tcp_addr.sin_port = htons(port);
tcp_addr.sin_addr.s_addr = inet_addr(ip);
// Convert IPv4 and IPv6 addresses from text to binary form
if(inet_pton(AF_INET,ip,&tcp_addr.sin_addr) <= 0)
{
printf("Invalid address/ Address not supported \n");
return -1;
}
if(connect(fd, (struct sockaddr*)&tcp_addr, sizeof(tcp_addr)) < 0)
{
printf("connect error: %s(errno: %d)\n",strerror(errno),errno);
return -1;
}
return fd;
}
// 通过UDP发送消息
void send_msg_by_udp(int msg_len, std::string target_ip)
{
udp_send_sock = connect_to_ground_station(target_ip.c_str(),UDP_PORT);
sendto(udp_send_sock,udp_send_buf,msg_len,0,(struct sockaddr*)&udp_addr,sizeof(udp_addr));
close(udp_send_sock);
}
// 通过TCP发送消息
void send_msg_by_tcp(int msg_len, std::string target_ip)
{
tcp_send_sock = connect_to_drone(target_ip.c_str(),TCP_PORT);
send(tcp_send_sock, udp_send_buf, msg_len, 0);
close(tcp_send_sock);
}
astar搜索
// 重置规划器
Astar_ptr->reset();
// 使用规划器执行搜索,返回搜索结果
int astar_state;
// Astar algorithm
astar_state = Astar_ptr->search(start_pos, goal_pos);
// 未寻找到路径
if(astar_state==Astar::NO_PATH)
{
path_ok = false;
exec_state = EXEC_STATE::WAIT_GOAL;
pub_message(message_pub, prometheus_msgs::Message::WARN, NODE_NAME, "Planner can't find path!");
}
fast planner (无人机路径规划,很吊)
Fast-Planner无人机快速路线规划|AI开源项目|Github源码+论文|研讨-AI算法狮 (aixmzc.com)
该项目包含用于四旋翼快速飞行的强大且计算效率高的算法的集合:
运动学路径搜索
基于B样条的轨迹优化
拓扑路径搜索和路径引导优化
感知感知的计划策略(出现)
这些方法在下面列出的论文中有详细介绍。
如果您在研究中使用这个项目,请至少引用我们的一篇论文:Bibtex。
快速自主飞行的稳健高效的四旋翼轨迹生成,周博宇,高飞,王鲁奇,刘楚豪和沉少杰,IEEE机器人与自动化快报( RA-L),2019年。
使用引导性基于梯度的优化和拓扑路径进行稳健的实时无人机重新规划,周博宇,高飞,潘洁和沉少杰,IEEE国际机器人与自动化会议( ICRA),2020年。
猛禽:四旋翼快速飞行的稳健和感知感知轨迹重新规划,周博宇,潘杰,高飞和沉少杰,提交给正在审查的IEEE机器人交易( T-RO)。
所有计划算法以及其他关键模块(例如映射)均在fast_planner中实现:
plan_env:在线映射算法。它以深度图像(或点云)和相机姿态(测距)对作为输入,进行射线投射以更新概率体积图,并为规划系统构建欧几里德距离标记场(ESDF)。
path_searching:前端路径搜索算法。目前,它包括一个动力学动力学路径搜索,该搜索尊重了四旋翼的动力学。它还包含基于采样的拓扑路径搜索算法,以生成捕获3D环境结构的多个拓扑独特的路径。
bspline:基于B样条的轨迹表示的实现。
bspline_opt:使用B样条轨迹的基于梯度的轨迹优化。
active_perception:感知感知的计划策略,使四旋翼飞机能够主动观察并避免未知障碍,并在将来出现。
plan_manage:计划和调用映射和计划算法的高级模块。此处包含用于启动整个系统的接口以及配置文件。
除了文件夹fast_planner之外,还使用轻量级的uav_simulator进行测试。