文章目录
注意,最权威的教程地址!:https://www.jianshu.com/p/5e6b77a2e4ae
TB2仿真
Turtlebot详细教程(indingo)
扫了一遍
Turtlebot与仿真
虽然仿真了大部分,后面多turtlebot没有仿真(因为根据教程的来仿真不来 其是indingo并且kinetic的没有某些东西,要搜kinetic的多turtlebot)以及最后两个demo不成功,倒数第二个跑的乱七八遭,倒数第一个gazibo的world没有出来,一片黑,然后要执行slam功能时候报错没有sklearn,在考虑是否要用anconda,因为py2.7的下sklearn挺麻烦)
SLAM 涉及到的算法
需要了解的东西:
SLAM:经典2D_SLAM算法比较:Hector slam、gmapping、cartographer
hector_slam 很久之前的
slam_karto
cartographer 貌似是现在的state of art
GMapping 貌似没有带回环检测,所以师兄不推荐
navigation
navigation,导航包
navigation介绍: http://wiki.ros.org/navigation
navigation应用:http://wiki.ros.org/navigation/Tutorials/RobotSetup
gmapping
gmapping SLAM建图软件包
gmapping介绍: http://wiki.ros.org/gmapping
gmapping介绍:http://wiki.ros.org/slam_gmapping
gmapping介绍:http://wiki.ros.org/openslam_gmapping?distro=indigo
AMCL
amcl介绍:http://wiki.ros.org/amcl
如果PRlidar端口改变
Error, cannot bind to the specified serial port /dev/rplidar.
https://blog.csdn.net/qq_40157728/article/details/88690223
https://unix.stackexchange.com/questions/437891/error-cannot-bind-to-the-specified-serial-port-dev-ttyusb0-during-boot-using-s
https://answers.ros.org/question/199561/rplidar-driver-installation-problem-on-ubuntu/
TB2base pkg
Ubuntu16.04+kinetic下学习turtlebot2之turtlebot2包的安装及简单测试
https://github.com/turtlebot/turtlebot_simulation.git
not found
changed to https://github.com/turtlebot/turtlebot_simulator.git
两个电脑ssh连接
https://blog.csdn.net/weixin_42056625/article/details/88413981
手柄控制TB2
turtlebot入门-xbox360无线游戏杆控制turtlebot
实验室是罗技手柄
罗技F710无线手柄在ROS下的安装使用:
这里需要注意的是
- 我们首先需要按下手柄中间的logitech这时候匹配了 才会有js0出现
- 注意手柄要选择direct 模式 也就是手柄前侧xd切换按钮那里。
- 出现js0之后使用sudo jstest /dev/input/js0测试,需要按下RT或者LT(手柄后方的防错误按纽)
- 如果发现不行,更换sudo jstest /dev/input/js0 js后面的数字,有时候会更变
然后按照
turtlebot入门-xbox360无线游戏杆控制turtlebot
使用手柄
关闭之前所有打开的终端,重新打开启动roscore
$ roscore
新终端启动turtlebot
$roslaunch turtlebot_bringup minimal.launch
新终端设置设备并启动游戏杆遥控支持
如果出现端口改变 从js0到js4,那么
rosparam set /joystick/dev /dev/input/js4
$rosparam set /joystick/dev /dev/input/js0
$roslaunch turtlebot_teleop logitech.launch
测试使用,按住左边的LB按钮激活游戏杆并移动左遥控杆,Turtlebot应该就有反应。
手柄控制小乌龟
ROS之游戏手柄控制乌龟和机器人
因为发现那个显示屏需要充电,所以先充他个几小时,为了加强自己开发ROS的能力,决定试一试这个手柄控制乌龟,如果之后想再锻炼,可以手柄控制仿真小乌龟
首先创建包的话catkin_create_pkg helloturtle std_msgs roscpp
写好logteleop.cpp名字之后
下面是根据我们的名字改的launch文件
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="sim">
</node>
<node pkg="helloturtle" type="logteleop" name="logteleop" output="screen">
</node>
<!--input axis -->
<param name="axis_linear" value="4" type="int"/>
<param name="axis_angular" value="3" type="int"/>
<!--input vel -->
<param name="vel_linear" value="2" type="double"/>
<param name="vel_angular" value="1.5" type="double"/>
<node respawn="true" pkg="joy" type="joy_node" name="joystick" >
</node>
</launch>
但是就是一直显示找不到
ERROR: cannot launch node of type [helloturtle/logteleop]: can’t locate node [logteleop] in package [helloturtle]
的确是
在rosrun自动补全后发现下面只能看到hello_world_node 明显是之前看教程的时候编译下来的node,而自己的node不存在,我还需要好好看一下ROS编程书
书中需要修改CMakeList.txt
我在修改了package.xml and CMakeList.txt之后cm发现
#指定cmake最低版本
project(my_first_ros_pkg)#指定pkg名 需要和package.xmlpkg名相同
find_package(catkin REQUIRED COMPONENTS roscpp std_msgs geometry_msgs sensor_msgs)#添加依赖包
catkin_package( CATKIN_DEPENDS roscpp std_msgs) #catkin构建选项
include_directories( ${catkin_INCLUDE_DIRS})#指定包含目录的选项
#构建之后要创建的可执行文件的选项,生成logteleop可执行文件
add_executable(logteleop src/logteleop.cpp)
#创建特定的可执行文件之前将库和可执行文件进行连接
target_link_libraries(logteleop ${catkin_LIBRAR