ardupilot_gazebo仿真(一)
ardupilot_gazebo仿真
标签(空格分隔): 未分类
ardupilot_gazebo仿真 官网网址
代码更新地址
Ardupilot Gazebo Plugin & Models
Requirements :
Native Ubuntu Xenial(16.04 LTS) able to run full 3D graphics.
Note : Virtual Machine such as VMWare Player does not support full 3D graphics.
but, possible solution is here
Type follow in the terminal,
echo "export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc
solution retreived from here http://answers.gazebosim.org/question/13214/virtual-machine-not-launching-gazebo/
ArduPilot setup for SITL launch
Gazebo version 7.x or 8.x
The gazebo9 branch will works on gazebo >= 9.x
Disclamer :
This is a playground until I get some time to push the correct patch to gazebo master (I got hard time to work with mercurial..)!
So you can expect things to not be up-to-date.
This assume that your are using Ubuntu 16.04
Usage :
I assume you already have Gazebo 7+ installed with ROS (or without).
If you don't have it yet, install ROS with sudo apt install ros-kinetic-desktop-full
(follow instruction here http://wiki.ros.org/kinetic/Installation/Ubuntu).
Or install directly gazebo8 from http://gazebosim.org/tutorials?tut=install_ubuntu
libgazebo7-dev or libgazebo8-dev must be installed.
For Gazebo 7
sudo apt-get install libgazebo7-dev
OR
For Gazebo 8
sudo apt-get install libgazebo8-dev
git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
mkdir build
cd build
cmake ..
make -j4
sudo make install
Set Path of Gazebo Models / Worlds...
Open up .bashrc
sudo gedit ~/.bashrc
Copy & Paste Followings at the end of .bashrc file
source /usr/share/gazebo/setup.sh
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}
Install is done !!
Now launch a world file with a copter/rover/plane and ardupilot plugin, and it should work!
(I will try to add some world file and model later)
HELP
How to Launch :
Launch Ardupilot Software In the Loop Simulation for each vehicle.
On new terminal, Launch Gazebo with basic demo world.
在执行2nd之前需要在终端中source
source /usr/share/gazebo/setup.sh
ROVER
On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v APMrover2 -f gazebo-rover -m --mav10 --map --console -I1
On 2nd Termianal(Launch Gazebo with Rover, Retrieved from Husky Model)
gazebo --verbose rover_ardupilot.world
COPTER (3DR IRIS)
On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v ArduCopter -f gazebo-iris -m --mav10 --map --console -I0
On 2nd Terminal(Launch Gazebo with demo 3DR Iris model)
gazebo --verbose iris_ardupilot.world
PLANE
On 1st Terminal(Launch Ardupilot SITL)
sim_vehicle.py -v ArduPlane -f gazebo-zephyr -m --mav10 --map --console -I0
On 2nd Terminal(Launch Gazebo with demo Zephyr flying wing model)
gazebo --verbose zephyr_ardupilot_demo.world
In addition, you can use any GCS that can connect to the Ardupilot locally or remotely(will require connection setup).
If MAVProxy Developer GCS is uncomfortable. Omit --map --console arguments out of SITL launch.
And use APMPlanner2 or QGroundControl instead.
(Possibly MissionPlanner but require Windows PC)
Local connection with APMPlanner2/QGroundControl is automatic, and easier to use.
For APMPlanner2
Download it from here http://firmware.eu.ardupilot.org/Tools/APMPlanner/
and launch it in terminal or run executable
apmplanner2
For QGroundControl
Download it from here and follow the installation guide.
https://donlakeflyer.gitbooks.io/qgroundcontrol-user-guide/en/download_and_install.html
Multi-Vehicle simulation
This section explains how to connect any combination of multi-vehicles of ArduPilot
For the multi-vehicle connection, port number is increased by 10
In SITL launch argument (sim_vehicle.py)
-I 0 has FDM in/out ports of 9002/9003 / GCS connection UDP:14550
-I 1 has FDM in/out ports of 9012/9013 / GCS connection UDP:14560
-I 2 has FDM in/out ports of 9022/9023 / GCS connection UDP:14570
and so on...
You will need to edit your world for any combination of Rover, Plane, Copter, etc...
Additional Note for GCS Connection
You will also need to edit ArduPilot Parameter SYSID_THISMAV to be unique from one another for the GCS connection
Example
Look simulation of 3 IRIS quadcopter at once from Jonathan Lopes Florêncio
https://www.youtube.com/watch?v=3c7EhVMaqKY&feature=youtu.be
Troubleshooting
Missing libArduPilotPlugin.so... etc
In case you see this message when you launch gazebo with demo worlds, check you have no error after sudo make install.
If no error use "ls" on the install path given to see if the plugin is really here.
If this is correct, check with "cat /usr/share/gazebo/setup.sh" the variable GAZEBO_PLUGIN_PATH. It should be the same as the install path. If not use "cp" to copy the lib to right path.
For Example
sudo cp -a /usr/lib/x86_64-linux-gnu/gazebo-7.0/plugins/ /usr/lib/x86_64-linux-gnu/gazebo-7/
path mismatch is confirmed as ROS's glitch. It'll be fixed.
如果只用源码进行仿真,可能会出现旋翼飞行不稳定的情况。需要对参数进行调节,而这里貌似不能用AUTOTUNE自动调参的功能进行调整参数。用AUTOTUNE出现问题的原因可能是模型内部的限幅导致,飞机无法响应对应的PID参数,所以我们直接对飞行pid参数进行修改。
PSC_ Parameters
ATC_ Parameters
根据飞行状态对这两个参数修改
ATC_RAT_RLL_D 0.001000
ATC_RAT_RLL_P 0.155000
飞行稳定 可以进行后续仿真。
参数设置和查询
param show ATC_*
param set ATC_RAT_RLL_P 0.155
ATC_ACCEL_R_MAX 110000.000000
ATC_ACCEL_Y_MAX 27000.000000
ATC_ANGLE_BOOST 1.000000
ATC_ANG_LIM_TC 1.000000
ATC_ANG_PIT_P 4.500000
ATC_ANG_RLL_P 4.500000
ATC_ANG_YAW_P 4.500000
ATC_INPUT_TC 0.150000
ATC_RATE_FF_ENAB 1.000000
ATC_RATE_P_MAX 0.000000
ATC_RATE_R_MAX 0.000000
ATC_RATE_Y_MAX 0.000000
ATC_RAT_PIT_D 0.003600
ATC_RAT_PIT_FF 0.000000
ATC_RAT_PIT_FILT 20.000000
ATC_RAT_PIT_I 0.090000
ATC_RAT_PIT_IMAX 0.500000
ATC_RAT_PIT_P 0.150000
ATC_RAT_RLL_D 0.001000
ATC_RAT_RLL_FF 0.000000
ATC_RAT_RLL_FILT 20.000000
ATC_RAT_RLL_I 0.090000
ATC_RAT_RLL_IMAX 0.500000
ATC_RAT_RLL_P 0.155000
ATC_RAT_YAW_D 0.000000
ATC_RAT_YAW_FF 0.000000
ATC_RAT_YAW_FILT 2.500000
ATC_RAT_YAW_I 0.018000
ATC_RAT_YAW_IMAX 0.500000
ATC_RAT_YAW_P 0.180000
ATC_SLEW_YAW 6000.000000
ATC_THR_MIX_MAN 0.500000
ATC_THR_MIX_MAX 0.500000
ATC_THR_MIX_MIN 0.100000
最新文章
- UITableView(一)
- [Scala] 快学Scala A2L2
- smarty中使用truncate出现乱码,用mb_substr解决
- GC overhead limit exceeded填坑心得
- cl.exe命令方式编译cpp
- 通过进程检测服务时脚本文件名不要起要检测的服务名字命名 shell程序从上到下执行若定义函数或引用系统函数需先定义 kill -USR2
- 【转】一个URL编码和解码的C++类
- PC寄存器的真实状态
- <;c:if>;判断参数是否为空
- GDSOI2015 task4 ACU
- 阿里云ECS连接阿里云Redis问题
- word20161229
- Perl:写POD文档
- C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
- JS创建对象之工厂模式
- ubuntu MySQL的卸载
- DOM 扩展
- (9)Python循环结构
- (转)关闭win10的Skype
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-1-cli
热门文章
- JavaScript:改变 HTML 内容
- html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果
- 一个nginx反向代理, 负载均衡的例子
- 基于 UIImagePickerController 的拓展封装 - iOS
- 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar &;&; Malek and Summer Semester
- poj_1091_跳蚤
- Django中ORM常用字段类型及参数
- 汉化manjaro下的火狐浏览器
- 【Nginx】Nginx配置REWRITE隐藏index.php
- Linux 内核之api_man 手册安装