小菜鸡的SLAM学习日记(1)

本人研一,学习SLAM小菜鸡一只。记录一下自己学习的历程和遇到的问题

本次学习内容来自想哥--从零开始搭二维激光SLAM

自己写demo

mkdir -p ~/catkin_ws/src        #新建文件夹

cd ~/catkin_ws/src/            #更换工作目录

catkin_create_pkg lesson1 roscpp sensor_msgs      #建立工程包    roscpp  sensor_msgs

                                                                  为两个依赖

Cmakelists.txt

其中内容为包括所有需要编译的c++文件

需要添加

# 为指定的文件生成可执行文件

add_executable(${PROJECT_NAME}_laser_scan_node src/laser_scan_node.cc)

# 为生成的可执行文件添加依赖

add_dependencies(${PROJECT_NAME}_laser_scan_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

# 为生成的可执行文件添加库的链接

target_link_libraries(${PROJECT_NAME}_laser_scan_node

  ${catkin_LIBRARIES}

)

利用catkin_create_pkg指令产生的包含package.xml(是自动生成的无需改动)

catkin_make 对当前产生的程序进行编译

遍历雷达数据的方法: ranges 字段中储存的只有极坐标系下的距离值,如果我们想知道每个数据点对应欧几里得坐标,还需要将极坐标进行转换。

转换的方法就是 通过索引来获取 ranges 中的值,再通过索引算出这个值对应的角度

第i个数据点的距离值为 ranges[i]

第i个数据点的角度为 angle = angle_min + angle_increment * i

所以这个点对应的x坐标为 ranges[i] * cos(angle)

所以这个点对应的y坐标为 ranges[i] * sin(angle)

以后都会用到的就是launch文件

操作步骤

mkdir -p ~/catkin_ws/src/lesson1/launch

Launch文件中包含的信息包括(程序运行需要包括的功能)

<launch>

    <!-- bag的地址与名称,需要改成自己电脑的对应的地址 -->

    <arg name="bag_filename" default="/home/lx/bagfiles/lesson1.bag"/>

    <!-- 使用bag的时间戳 -->

    <param name="use_sim_time" value="true" />

    <!-- 启动节点 -->

    <node name="lesson1_laser_scan_node" pkg="lesson1" type="lesson1_laser_scan_node" output="screen" />

    <!-- play bagfile -->

    <node name="playbag" pkg="rosbag" type="play"

        args="--clock $(arg bag_filename)" />

</launch>

程序运行的环境问题

rospack profile

source ~/catkin_ws/devel/setup.bash

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc   #避免新开终端需要再次进行source的问题

运行launch文件(好处在于可以不用开启多个终端)

roslaunch lesson1 demo.launch

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值