轉載自:http://blog.exbot.net/archives/3035
在虛擬機上運行Gazebo會遇到諸多問題,主要是顯卡和硬件加速的問題,近期在虛擬機上安裝了Ubuntu14.04 ROS(Indigo) Gazebo進行了測試,並把問題總結如下:
ROS Indigo的Gazebo是2.2.3 版本。對於完全集成的ROS系統,我們建議使用2.x版本的Gazebo。如果需要使用其他版本的Gazebo可能需要費一些周折,具體方法可參考:
- Gazebo與ROS版本說明:
http://blog.csdn.net/ZhangRelay/article/details/52824812?locationNum=1
- ROS(indigo) 安裝和使用更新版本的Gazebo
http://blog.csdn.net/zhangrelay/article/details/53318991
通常默認indigo-desktop-full安裝會自動安裝好Gazebo,無需過多考慮。
sudo apt-get install ros-indigo-desktop-full
1. 關閉虛擬機硬件加速
在虛擬機中的linux上運行Gazebo的時候,Gazebo窗口閃退,並提示問題:
VMware: vmw_ ioctl_command error Invalid argument.
運行如下ROS+Gazebo命令也會報錯:
roscore & rosrun gazebo_ros gazebo
解決辦法:
- 關閉硬件加速(親測可用)
echo " export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc
- 關閉虛擬機的3D圖形加速(備選)
export LIBGL_ ALWAYS_SOFTWARE=0
- 在虛擬機設置中關閉3D加速(備選)
2. 下載Gazebo模型
這時運行下面Gazebo命令,OK,錯誤沒有了,但怎么是一抹黑啊!
roscore & rosrun gazebo_ros gazebo
首次運行Gazebo,加載模型會出現非常緩慢,原因可能是不能正確下載模型。
Warning [ModelDatabase.cc:356] Getting models from[http://gazebosim.org/models/]. This may take a few seconds.
因為http://gazebosim.org/models/地址已經變換http://models.gazebosim.org, 可能導致在訪問時候無法自動轉換地址。
解決方法:通過直接下載所有模型到用戶的根目錄下的.gazebo/models/下。
- 方法1:在線下載
運行:
cd ~/.gazebo/
ls
mkdir -p models
ls
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
ls
輸出:
gazebo_models.txt
運行:
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
- 方法2:直接下載包
全部模型有170M,但在線下載速度非常慢,我下了一天一夜才下完。不過現在小伙伴已經將其共享至網盤,可直接下載,然后將其解壓至~/.gazebo/models里。
鏈接:http://pan.baidu.com/s/1pKaeg0F 密碼:cmxc (來自rosclub.cn)
或是下載https://bitbucket.org/osrf/gazebo_models/downloads/ (ExBot ROS專區,網友提醒)
解壓后如下圖:
此時運行Gazebo,便可以顯示物體了,並可在Insert選項卡里添加需要的物體(左鍵拖放,右鍵放置)。
roslaunch gazebo_ros empty_world.launch
Gazebo界面操作方法:左鍵單擊拖動——平移,中鍵單擊拖動——改變觀察角度,滾輪縮放,右鍵單擊拖動——縮放。
3. 運行仿真機器人了
下面就可以愉快運行機器人了,首先安裝Turtlebot包。
安裝Turtlebot,打開終端,運行如下命令:
sudo apt-get update
sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-turtlebot-simulator ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs
新窗口運行:
roscore
新窗口,打開turtlebot_gazebo:
roslaunch turtlebot_gazebo turtlebot_world.launch
下面就可以用鍵盤控制turtlebot前后左右走了。
此時在終端單擊右鍵打開一個標簽頁:
roslaunch turtlebot_teleop keyboard_teleop.launch
4. 清除Gazebo殘留進程
當不正確關閉Gazebo時,再次啟動Gazebo會遇到sever無法啟動的問題。
Exception [Master.cc:50] Unable to start server[bind: Address already in use]. There is probably another Gazebo process running.
解決方法:
用ps命令查找gzserver進程,將其kill。或是干脆重啟系統。
至此,就可以愉快地玩耍Gazebo啦!