## **1. 啟動lili_robot底盤**
依次打開底盤控制板電源,以及 樹莓派電源(按下充電寶開關);運行以下命令,將會發布/odom信息,/tf信息,打開手柄遠程遙控(通過調用joy_control.py節點)。
~~~
首先啟動ROS主程序
登錄PC端,運行
$ roscore
而后登錄樹莓派系統,運行
$ roslaunch lili_robot robot_core.launch
~~~
發布/odom里程信息,以及/tf信息。
連通樹莓派和底盤控制板,發送電機轉速指令到底盤。
## **2. 用手柄或者鍵盤遠程遙控**
(1)北通神鷹手柄控制
在PC機上運行以下命令,指定手柄端口,以及發布/joy數據。控制機器人運動,機器人的正向與激光雷達的安裝方向一致。
~~~
$ rosparam set joy_node/dev "/dev/input/js0"
$ run joy joy_node
~~~
左邊遙感向前向后是前進后退,左邊遙感左右是控制轉向。
(2)鍵盤控制
在PC端運行以下命令:
~~~
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
~~~
當我們按下鍵盤時,teleop_twist_keyboard 包會發布 /cmd_vel 主題發布速度。
操作方法:
前進 i 后退 ,停止 k
左轉j,右轉l,停止k
鍵盤或者手柄產生的/cmd_vel消息,被 base_control節點訂閱
## **3. 執行建圖過程**
在樹莓派上運行以下命令,
~~~
$ roslaunch lili_robot robot_slam.launch
~~~
robot_slam.launch除了啟動gmapping節點,也同時啟動了 robot_core.launch 和 start_rplidar.launch。
在PC端,打開rviz,添加地圖和激光消息;遠程控制車子緩慢在屋子里,在rviz中可以看到所建地圖隨著小車的前進而不斷更新。
保存地圖是用以下命令,從PC機遠程登錄樹莓派,在樹莓派系統的主目錄(/home/lili)保存mymap.yaml和mymap.pgm 地圖文件。
~~~
$ rosrun map_server map_saver -f ~/mymap
~~~
將地圖文件拷貝到 /catkin_ws/src/lili_robot/map目錄。
~~~
$ cp ~/mymap.yaml mymap.pgm ~/catkin_ws/src/lili_robot/map/
~~~
## **4. 自主導航**
在樹莓派終端運行
~~~
roslaunch lili_robot robot_nav.launch
~~~
在PC端,運行rviz。
~~~
roslaunch lili_robot view_nav.launch
~~~
## **5. 需要注意的問題**
**初始定位**
* 在導航剛啟動的時候,機器人不知道自己在地圖上的位置和姿態,(對于平面移動機器人而言,即位置和航向)。需要先初始化定位,給出機器人初始位置:
點擊2D Pose Estimate 按鈕,觀察機器人在地圖上的大概位置,在該位置按下鼠標左鍵,并拖出箭頭,箭頭的的方向設置為機器人的前方方向。
* 這時候地圖上會在機器人周圍生成一團小箭頭, 這些箭頭就是評估機器人目前的相對位置;時激光邊緣應該跟地圖的墻面是重合的,如果不一致,需要重復定位操作,確保定位準確。
* 在rviz中需要設置 global options的fixed frame為“map”,而后再進行2D Pose Estimate。
**遙控**
* 用手柄遙控機器人運動,遙控指令優先級高于自主導航指令;
* 遙控機器人原地轉圈或者小范圍運動,可以使得初始定位階段的定位箭頭進行聚合,定位結果更加準確。
**發送導航目標**
點擊“2D Nav Goal”按鈕,點住地圖上某一點,并拖出一個箭頭,松開后即將當前點設置為目標點。機器人自主規劃一條路線到目標點。