前期工作进展记录

学习目标:

1. C++实现各类运动规划算法
2. 完成师兄论文,无人机定位仿真
3. 整理算法框架,选择一种改进

学习内容:

具体如下:

  1. 首先启动ros环境,然后启动rviz,之后导入地图,借助launch文件同时启动三个节点,还可以设置一些参数,如地图大小、起始点参数等。(launch文件的好处:批次启动节点,设置常用参数)
    此时编译launch文件出现问题,报错:
Value error: 'ascii' codec can't decode byte 0xe6 in position 14: ordinal not in range(128)
The traceback for the exception was written to the log file

具体查询ros中启动launch文件报错ascii,找到问题原因:存在中文路径!具体参考文章
后更改catkin_ws工作空间目录,发现仍然报错,但与之前不同:

RLException: [demo.launch] is neither a launch file in package [grid_path_searcher] nor is [grid_path_searcher] a launch file name
The traceback for the exception was written to the log file

寻找解决原因,ROS_PACKAGE_PATH不包含本包的路径,添加路径,具体参考文章,之后重新运行launch文件后,导入地图成功,节点启动成功。
在这里插入图片描述

在这里插入图片描述

random_complex节点:随机生成一个三维的点云地图;
waypoint_generator节点:将人为设定的目标点信息传递给demo_node;
demo_node节点:在上面两个节点中订阅两个topic,waypoint_generator要去哪,random_complex要去哪里,最后发布两个可视化消息grad_map_vis和grid_path_vis,在rviz中显示地图和路径点(在graph中未显示)。

  1. 仿真结果,正常来说,在地图中给定目标点goal,就会自动规划出路径,一条是Dijkstra算法规划的路径,一条是A*算法规划的路径。但rviz显示goal3tool插件缺失。后来又尝试了打开另一个rviz文件jps_demo.rviz,插件可以正常使用,使用goal3tool设置目标点,报错
================================================================================REQUIRED process [demo_node-1] has died!
process has died [pid 8082, exit code -11, cmd /home/dsy/my/catkin_ws/devel/lib/grid_path_searcher/demo_node ~waypoints:=/waypoint_generator/waypoints ~map:=/random_complex/global_map __name:=demo_node __log:=/home/dsy/.ros/log/d316903e-0737-11ee-a190-000c29bfb909/demo_node-1.log].
log file: /home/dsy/.ros/log/d316903e-0737-11ee-a190-000c29bfb909/demo_node-1*.log
Initiating shutdown!
================================================================================

三个节点同时被shutdown,但是路径并未规划出。

6.13
发现roslaunch节点后无法规划路径报错的原因:代码编译没有问题,但是运行后会报错,这和函数未完成有关,接下来梳理代码框架,找到缺失的部分代码,然后补全。
6.16
补全代码,重新catkin_make后,打开jps_demo.rviz,发现goal3tool插件又报错,原因未知。
6.17
找到goal3tool插件报错原因,在运行rviz前需要刷新环境变量:

source devel/setup.bash

之后launch demo.rviz不报错。
补全Astar算法。

The class required for this tool, 'rviz_plugins/Goal3DTool', could not be loaded.
Error:
According to the loaded plugin descriptions the class rviz_plugins/Goal3DTool with base class type rviz::Tool does not exist. Declared types are rviz/FocusCamera rviz/Interact rviz/Measure rviz/MoveCamera rviz/PublishPoint rviz/Select rviz/SetGoal rviz/SetInitialPose rviz_plugin_tutorials/PlantFlag

终端报错显示

[ERROR] [1686886784.642602866]: PluginlibFactory: The plugin for class 'rviz_plugins/Goal3DTool' failed to load.  Error: According to the loaded plugin descriptions the class rviz_plugins/Goal3DTool with base class type rviz::Tool does not exist. Declared types are  rviz/FocusCamera rviz/Interact rviz/Measure rviz/MoveCamera rviz/PublishPoint rviz/Select rviz/SetGoal rviz/SetInitialPose rviz_plugin_tutorials/PlantFlag

6.20
尝试解决路径无法规划的问题,报错内容如下:

Segmentation fault (Signal sent by the kernel [(nil)])
================================================================================REQUIRED process [demo_node-1] has died!
process has died [pid 28442, exit code -11, cmd /home/dsy/my/catkin_ws/devel/lib/grid_path_searcher/demo_node ~waypoints:=/waypoint_generator/waypoints ~map:=/random_complex/global_map __name:=demo_node __log:=/home/dsy/.ros/log/1f177c22-0bf3-11ee-8079-000c29bfb909/demo_node-1.log].
log file: /home/dsy/.ros/log/1f177c22-0bf3-11ee-8079-000c29bfb909/demo_node-1*.log
Initiating shutdown!
================================================================================

查找解决原因,段错误(核心已转储),尝试了下列解决方案:

  1. “段错误 (核心已转储) ”一种可能原因及其解决方法仍然报错
  2. gcc编译c++文件
  3. 希望通过生成core文件定位到具体出错的代码位置,参考文章,但是发现ros节点文件套娃头文件太多,需要不断添加路径信息,参考文章,之后在添加其中一个头文件路径时,重新更改了.vscode中.json文件中的路径,发现g++编译仍然早不到头文件路径,尝试重新catkin_make,发现报错,看不懂报错提示,没办法直接重新建立工作空间。
  4. 重点来了,继续按照之前的步骤:
#在src目录下
catkin_init_workspace
#在catkin_ws目录下
catkin_make
#补全Astar代码,重新catkin_make
catkin_make
#启动ros
roscore
#打开新的终端窗口,先source一下
source devel/setup.bash
#启动rviz,open config打开demo.rviz
rviz
#启动节点前需要先在ROS_PACKAGE_PATH包含本包的路径,具体步骤参考前文
#路径添加完成后,roslaunch启动节点
roslaunch grid_path_searcher demo.launch


使用goal3tool工具在地图中设定target point,之后可以看到Astar算法自动生成了由起点到终点的路径:
在这里插入图片描述
在图中已经标明了起点和终点以及Astar算法生成的路径,改变终点,路径会重新规划并生成。
6.25
写周报,记录问题
6.26
今天在写JPS代码时,发现A*代码的一个错误,改正之后又实现了正确的路径规划功能。但又发现一个问题,当选定不同的目标点时,有时可以规划出路径,有时会报错,经过多次尝试发现当目标点设置的z坐标高于点云地图设置的高度时,便会报错,即当设定的目标点超出设定的地图范围时,便会报错。

6.27

  1. 地下挑战赛
  2. 论文:
    a. 工程工作
    1. 先实现一个三维无人机运动的demo;
    2. 可以将这个无人机的imu,速度导出;
    3. 实现两个无人机;
    4. 将两个无人机的相对位置,imu,速度导出;
    5. 之后在ubuntu中实现这两个无人机的定位算法;
    6. 设计容器实现定位算法;
      结束。
      b. 论文工作
      画一个框图,英文;
      详细说明各部分的作用;
      提供一段文字(具体要求看师兄);

6.28
补全JPS算法代码,实现了确定一个终点,将同时规划出两条由起点到终点的路径,一条由A*算法规划得出,另一条由JPS算法规划得出,同时终端还会输出两类算法规划路径所需的time,cost,visited_nodes,下图绿色为Astar算法规划的路径,红色为JPS算法规划的路径,终端输出两类算法的具体信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

理论上来讲JPS只对跳点进行操作,与Astar算法相比更高效,但仿真结果并不是这样,尝试重新编写代码,寻找问题,可能是代码逻辑有误。在助教讲解课程中,提到一些情况下A*算法更高效,一些情况下JPS算法更高效,具体哪种情况,需要再对理论进行分析,同时梳理代码逻辑,并结合仿真结果对比分析,得出结论。

6.29-6.30
首先实现工程工作的第一步,实现一个三维无人机运动模型,具体实现步骤如下:
参考Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建

  1. ubuntu的源并没有修改,ros的melodic版本在之前已经安装,这里直接跳过;
  2. 卸载ros自带的gazebo,并重新安装完整gazebo,测试安装成功;
  3. 安装对应melodic版本的MAVROS;
  4. PX4配置过程中遇到了一些问题,下面记录问题及解决方法:
    在安装必要的依赖时,输入指令
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

总是连接网络超时或下载中断,尝试更换各种源后,发使用ubuntu自身的源更方便,换个时间段安装,成功;

#编译
make px4_sitl_default gazebo
#执行上述指令报错,找到一篇文章,输入如下指令
sudo apt-get install  libgazebo9-dev
#再编译
make px4_sitl_default gazebo
#不报错,但卡在gazebo界面,ctrl+c终止,再编译后成功启动gazebo界面,显示一个静止的无人机,关掉即可
#修改 ~/.bashrc时,出来增加文章中的四行语句外,还注释掉了.bashrc文件中原有的一行语句
source ~/catkin_ws/devel/setup.bash
#之后roslaunch
roslaunch px4 mavros_posix_sitl.launch
#rostopic
roslaunch px4 mavros_posix_sitl.launch
#连接成功,我的界面如下
---
header: 
  seq: 1254
  stamp: 
    secs: 1255
    nsecs: 940000000
  frame_id: ''
connected: True
armed: False
guided: True
manual_input: False
mode: "AUTO.LOITER"
system_status: 3
---

此外,我没有增加临时空间,为了防止内存问题,我将虚拟机4G改为了8G,过程中没有发生内存错误。
5. QGC地面站安装
下载了一个文件,按照教程简单配置后,双击文件打开,界面如下,目前没有发现任何错误,后面操作也没有用到此应用。
在这里插入图片描述
6. 安装XTDrone无人机通用仿真平台
按照教程操作,命令行中偶尔会有两行报错,原因未知,但经测试目前没有影响,用键盘控制无人机飞行,注意这里要在终端敲控制指令,飞机正常起飞。
在这里插入图片描述
终端会输出飞行数据,以及下发的控制指令:
在这里插入图片描述
至此,工作第一步实现。

7.1
整理总结。

7.3
预计目标:
修改JPS算法,直至结果合理;
补全RRT*算法,检查结果的合理性。


如何做运动规划研究:

  1. 对规划有一个总体的认知,对于不同的场景,选择适合的方法,并且人为设定自定义的策略。
  2. 动手做,别人的算法是否可行,亲自试验验证算法是否可行,是不是好的。

学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值