/home/hao/catkin_lh/src/arbotix_ros/arbotix_python/src/arbotix_python 问题出现在这里
---------------------------------------------------------
需要注意的一点是USB查哪个不重要,重要的是哪个USB先插 哪个USB后插的问题 linux系统会很直接的把插入的端口,依次排列
程序中设置的是,先插左边驱动 后插右边驱动,再插入NAV,这样的话可以直接用后面的代码 按照中下上的顺序插入(经验测试结果)
要牢记,每次关机之前务必点击手柄的back键 退出点击的模式,否则下次开机会发生错误。
---------------------------------------------------------
source initcom 中的内容为
sudo chmod 777 ttyUSB0 //赋予左边驱动EPOS的USB权限
sudo mv ttyUSB0 ttyS100
sudo chmod 777 ttyUSB1 //赋予右边驱动
sudo mv ttyUSB1 ttyS101
sudo chmod 777 ttyUSB2 //赋予组合导航USB权限
开发运行流程
roscore ros节点准备
rosrun smartcar_teleop smartcar_teleop 键盘节点(此键盘节点wsad前后左右 按shift实现两倍的增长)
rosrun teleop_twist_keyboard teleop_twist_keyboard.py 也是键盘的节点 uiojklm,。 表示一个九个格子的阵,前后左右
rosrun joy joy_node 罗技节点话题发布
rosrun movecar base_controller 接受键盘数据 movebase数据 手柄数据,发布里程信息
rosrun movecar base_controller_test 收到键盘数据,以及组合导航信息,用于测试里程,得到对象距离的时间,以及位置控制的脉冲数
rosrun nav_100 nav_100 导航GPS数据包节点
rosrun movecar log_teleop 罗技手柄车体控制节点,需另外启动罗技节点
rosrun movecar logcontrol.launch 运行罗技节点和底盘驱动 (用手柄控制车)
rosrun movecar odometry_publisher_car 用于发布里程即的数据
以上操作简化为如下几行代码
1.给串口赋予权限
source initcom
2.启动sick雷达 获取cmd——vel主题的消息 获取手柄数据用来暂停开始 发布里程数据
roslaunch movecar movecar.launch
3.加入机器人的模型 运行arbotix_python仿真所需节点 发布机器人状态信息
roslaunch car_bringup fake_car.launch
4.加载地图,运行movebase导航包 运行amcl定位
roslaunch car_nav fake_amcl.launch map:=test58.yaml
5.可视化操作
rosrun rviz rviz -d `rospack find car_nav`/amcl.rviz
-------------------------------------------------------------------------
罗技手柄控制测试,
rosrun joy joy_node //罗技节点话题发布
rosrun smartcar smartcar //接受罗技节点数据并且传给乌龟 这个代码主要是将罗技的摇杆数据转到cmd——vel上 不过删掉了
rosrun turtlesim turtlesim_node
/----------------------------------------------------------------------------------------------------------
/-----------------地面移动平台测速------------------------
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
rosrun movecar car_controller 只是启动控制器 且话题名称是cmd_vel
/----------------------------------------------------------------------------------------------------------
-----------激光网址--------------
https://www.cnblogs.com/wenhust/p/6047258.html Cartographer系列之二——hokuyo激光雷达跑cartographer
https://www.ncnynl.com/archives/201612/1166.html cartographer在Turltlebot的应用2
/------------------------------------------------------------------------------------------------------
/-------------hokuyo激光雷达的配置-----------/
sudo apt-get install ros-kinetic-urg-node
sudo apt-get install ros-kinetic-urg-c
sudo apt-get install ros-kinetic-laser-proc
这三个包全写的CMAKE文件 /opt/ros/kinetic/share/urg_node/msg 这个路径下可以查看msg类型
前三步不用管了 直接开始后面
sudo gedit /etc/network/interfaces
然后复制下面的行命令 一定要注意的事情是
auto enp2s0
allow-hotplug enp2s0
iface enp2s0 inet static
address 192.168.0.1
netmask 255.255.255.0
打开roscore
插上电之后再这样
service networking restart
source devel/setup.bash
rosrun urg_node urg_node _ip_address:="192.168.0.10"
rosrun rviz rviz laser 添加才可以看
/------------------------------------------------------------------------------------------------------
/----------------cartographer建图--------------------
roslaunch cartographer_ros demo_hokuyo.launch 建图
rosrun map_server map_saver map:=/map -f test 保存地图 但是效果不好
map_sever要修改 这个包来自于导航包 可以更改其中文件 并非ros自带的.
-------------------------------------------------------------------------------------------------------
/---------------------gmaping-----------------------
roslaunch rbx1_bringup fake_turtlebot.launch
roslaunch turtlebot_navigation hokuyo_gmapping_demo.launch
roslaunch rbx1_nav gmapping_demo.launch
cd catkin_hf
roslaunch turtlebot3_slam turtlebot3_slam.launch
rosrun map_server map_saver map:=/map -f test
/----------------------------------------------------------------------------------------------------
*--------------运行仿真机器人--------------------*
1) 运行仿真机器人:
roslaunch rbx1_bringup fake_turtlebot.launch
2) 运行move_base节点以及载入空白地图
roslaunch rbx1_nav fake_move_base_blank_map.launch
3) 运行rviz可视化界面
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
4) 不简单发布 Twist 消息来控制 机器人移动 而使用 move_base 来控制机器人
即发布消息到 /move_base_simple/goal geometry_msgs/PoseStamped 来控制机器人移动
rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped \
'{ header: { frame_id: "map" }, pose: { position: { x: 1.0, y: 0, z: 0 }, orientation: { x: 0, y: 0, z: 0, w: 1 } } }'
/-----------------------------------------------------------------------------------------------------------
/-----------------turtlebot实际导航的运行-----------/
<!-- Fire up AMCL -->
<include file="$(find rbx1_nav)/launch/amcl_diff.launch" />
在face_amcl.launch 文件中添加以上的代码 就是差速移动平台的蒙特卡洛定位程序
接下来依次运行
roslaunch rbx1_bringup fake_turtlebot.launch
roslaunch rbx1_nav fake_amcl.launch map:=test.yaml
rosrun rviz rviz -d `rospack find rbx1_nav`/amcl.rviz
rosrun lms1xx LMS1xx_node _host:=192.168.0.1
这里需要注意的是雷达要晚于前三者的运行 否则会出现雷达时间报错
/---------------------------costmap_common_params.yaml 写法----重点改写第三行--------------------------------------------
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.15,-0.44], [-0.15,0.44], [0.91,0.44], [0.91,-0.44]]
#footprint_inflation: 0.01 # 对于圆形机器人 设置其半径 米 对于非圆形机器人 设置 footprint: 参数
#robot_radius: 1
inflation_radius: 0.2 # 机器人与障碍物的最小距离
max_obstacle_height: 0.6 #障碍物的 尺寸大小
min_obstacle_height: 0.0
observation_sources: scan # 数据来源
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}