Skip to content

Commit 9700e3b

Browse files
author
Julien Cassette
committed
Add 'Gazebo/' from commit 'b6713817b781337913529262384ac87244ea3c49'
git-subtree-dir: Gazebo git-subtree-mainline: 260259a git-subtree-split: b671381
2 parents 260259a + b671381 commit 9700e3b

File tree

68 files changed

+6321
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+6321
-0
lines changed

Gazebo/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*/build/*
2+
worlds/imav_indoor.world
3+
urdf/qws.urdf
4+
*.swp
5+
*~

Gazebo/CMakeLists.txt

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
cmake_minimum_required(VERSION 2.8.3)
2+
project(imav_2017)
3+
4+
## Add support for C++11, supported in ROS Kinetic and newer
5+
# add_definitions(-std=c++11)
6+
7+
## Find catkin macros and libraries
8+
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
9+
## is used, also find other catkin packages
10+
find_package(catkin REQUIRED)
11+
12+
## System dependencies are found with CMake's conventions
13+
# find_package(Boost REQUIRED COMPONENTS system)
14+
15+
16+
## Uncomment this if the package has a setup.py. This macro ensures
17+
## modules and global scripts declared therein get installed
18+
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
19+
# catkin_python_setup()
20+
21+
################################################
22+
## Declare ROS messages, services and actions ##
23+
################################################
24+
25+
## To declare and build messages, services or actions from within this
26+
## package, follow these steps:
27+
## * Let MSG_DEP_SET be the set of packages whose message types you use in
28+
## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
29+
## * In the file package.xml:
30+
## * add a build_depend tag for "message_generation"
31+
## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET
32+
## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
33+
## but can be declared for certainty nonetheless:
34+
## * add a run_depend tag for "message_runtime"
35+
## * In this file (CMakeLists.txt):
36+
## * add "message_generation" and every package in MSG_DEP_SET to
37+
## find_package(catkin REQUIRED COMPONENTS ...)
38+
## * add "message_runtime" and every package in MSG_DEP_SET to
39+
## catkin_package(CATKIN_DEPENDS ...)
40+
## * uncomment the add_*_files sections below as needed
41+
## and list every .msg/.srv/.action file to be processed
42+
## * uncomment the generate_messages entry below
43+
## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
44+
45+
## Generate messages in the 'msg' folder
46+
# add_message_files(
47+
# FILES
48+
# Message1.msg
49+
# Message2.msg
50+
# )
51+
52+
## Generate services in the 'srv' folder
53+
# add_service_files(
54+
# FILES
55+
# Service1.srv
56+
# Service2.srv
57+
# )
58+
59+
## Generate actions in the 'action' folder
60+
# add_action_files(
61+
# FILES
62+
# Action1.action
63+
# Action2.action
64+
# )
65+
66+
## Generate added messages and services with any dependencies listed here
67+
# generate_messages(
68+
# DEPENDENCIES
69+
# std_msgs # Or other packages containing msgs
70+
# )
71+
72+
################################################
73+
## Declare ROS dynamic reconfigure parameters ##
74+
################################################
75+
76+
## To declare and build dynamic reconfigure parameters within this
77+
## package, follow these steps:
78+
## * In the file package.xml:
79+
## * add a build_depend and a run_depend tag for "dynamic_reconfigure"
80+
## * In this file (CMakeLists.txt):
81+
## * add "dynamic_reconfigure" to
82+
## find_package(catkin REQUIRED COMPONENTS ...)
83+
## * uncomment the "generate_dynamic_reconfigure_options" section below
84+
## and list every .cfg file to be processed
85+
86+
## Generate dynamic reconfigure parameters in the 'cfg' folder
87+
# generate_dynamic_reconfigure_options(
88+
# cfg/DynReconf1.cfg
89+
# cfg/DynReconf2.cfg
90+
# )
91+
92+
###################################
93+
## catkin specific configuration ##
94+
###################################
95+
## The catkin_package macro generates cmake config files for your package
96+
## Declare things to be passed to dependent projects
97+
## INCLUDE_DIRS: uncomment this if you package contains header files
98+
## LIBRARIES: libraries you create in this project that dependent projects also need
99+
## CATKIN_DEPENDS: catkin_packages dependent projects also need
100+
## DEPENDS: system dependencies of this project that dependent projects also need
101+
catkin_package(
102+
# INCLUDE_DIRS include
103+
# LIBRARIES imav_2017
104+
# CATKIN_DEPENDS other_catkin_pkg
105+
# DEPENDS system_lib
106+
)
107+
108+
###########
109+
## Build ##
110+
###########
111+
112+
## Specify additional locations of header files
113+
## Your package locations should be listed before other locations
114+
# include_directories(include)
115+
116+
## Declare a C++ library
117+
# add_library(${PROJECT_NAME}
118+
# src/${PROJECT_NAME}/imav_2017.cpp
119+
# )
120+
121+
## Add cmake target dependencies of the library
122+
## as an example, code may need to be generated before libraries
123+
## either from message generation or dynamic reconfigure
124+
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
125+
126+
## Declare a C++ executable
127+
## With catkin_make all packages are built within a single CMake context
128+
## The recommended prefix ensures that target names across packages don't collide
129+
# add_executable(${PROJECT_NAME}_node src/imav_2017_node.cpp)
130+
131+
## Rename C++ executable without prefix
132+
## The above recommended prefix causes long target names, the following renames the
133+
## target back to the shorter version for ease of user use
134+
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
135+
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
136+
137+
## Add cmake target dependencies of the executable
138+
## same as for the library above
139+
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
140+
141+
## Specify libraries to link a library or executable target against
142+
# target_link_libraries(${PROJECT_NAME}_node
143+
# ${catkin_LIBRARIES}
144+
# )
145+
146+
#############
147+
## Install ##
148+
#############
149+
150+
# all install targets should use catkin DESTINATION variables
151+
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
152+
153+
## Mark executable scripts (Python etc.) for installation
154+
## in contrast to setup.py, you can choose the destination
155+
# install(PROGRAMS
156+
# scripts/my_python_script
157+
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
158+
# )
159+
160+
## Mark executables and/or libraries for installation
161+
# install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_node
162+
# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
163+
# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
164+
# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
165+
# )
166+
167+
## Mark cpp header files for installation
168+
# install(DIRECTORY include/${PROJECT_NAME}/
169+
# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
170+
# FILES_MATCHING PATTERN "*.h"
171+
# PATTERN ".svn" EXCLUDE
172+
# )
173+
174+
## Mark other files for installation (e.g. launch and bag files, etc.)
175+
# install(FILES
176+
# # myfile1
177+
# # myfile2
178+
# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
179+
# )
180+
181+
#############
182+
## Testing ##
183+
#############
184+
185+
## Add gtest based cpp test target and link libraries
186+
# catkin_add_gtest(${PROJECT_NAME}-test test/test_imav_2017.cpp)
187+
# if(TARGET ${PROJECT_NAME}-test)
188+
# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
189+
# endif()
190+
191+
## Add folders to be run by python nosetests
192+
# catkin_add_nosetests(test)
414 KB
Binary file not shown.

Gazebo/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
== IMAV2017 Virtual Challenge ==
2+
3+
Simulation environment using ROS and Gazebo for the IMAV2017 Virtual Challenge. It has been succesfully tested on Ubuntu 16.04 (Xenial) 64bit.
4+
5+
Please read the PDF file IMAV2017_Virtual_Challenge_Guide.pdf for detailled instructions and installation notes.
6+
7+
Quick install and run process (using bash, if you use a different shell you may need to adapt some scripts):
8+
- if not done make scripts executable:
9+
chmod +x setup.sh
10+
chmod +x run_gzb.sh
11+
chmod +x start_uav.sh
12+
13+
- run setup script (this should be done once for a fresh install without ROS or gazebo alreaded installed, in case of error run required commands by hand step by step)
14+
./setup.sh
15+
16+
- start gazebo environment simulator and ROS server
17+
./run_gzb.sh
18+
19+
- add a robot to the scene with default ID
20+
./start_uav.sh
21+
22+
Once ROS/gazebo simulation is running, you can use Simulink or your own system to control the UAV
23+

Gazebo/launch/imav_indoor.launch

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0"?>
2+
<launch>
3+
4+
5+
<!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
6+
7+
<!--
8+
Create the world from xacro
9+
-->
10+
<node name="create_world" pkg="xacro" type="xacro"
11+
args="--inorder '$(find imav_2017)/worlds/xacro/imav_indoor.world.xacro' -o '$(find imav_2017)/worlds/imav_indoor.world'" respawn="false" output="screen"/>
12+
13+
<include file="$(find gazebo_ros)/launch/empty_world.launch">
14+
<arg name="world_name" value="$(find imav_2017)/worlds/imav_indoor.world"/>
15+
</include>
16+
17+
18+
<!-- Spawn simulated quadrotor uav
19+
<include file="$(find imav_2017)/launch/spawn_quadrotor.launch" >
20+
<arg name="model" default="$(find imav_2017)/urdf/quadrotor_with_sensors.urdf.xacro"/>
21+
</include>
22+
-->
23+
24+
</launch>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0"?>
2+
3+
4+
<launch>
5+
<arg name="model" default="$(find imav_2017)/urdf/quadrotor.urdf.xacro"/>
6+
<arg name="x" default="0"/>
7+
<arg name="y" default="0"/>
8+
<arg name="z" default="0.5"/>
9+
<arg name="R" default="0"/>
10+
<arg name="P" default="0"/>
11+
<arg name="Y" default="0"/>
12+
<!-- send the robot XML to param server -->
13+
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(arg model)'" />
14+
15+
<!-- push robot_description to factory and spawn robot in gazebo -->
16+
<node name="spawn_robot" pkg="gazebo_ros" type="spawn_model"
17+
args="-param robot_description
18+
-urdf
19+
-x '$(arg x)'
20+
-y '$(arg y)'
21+
-z '$(arg z)'
22+
-R '$(arg R)'
23+
-P '$(arg P)'
24+
-Y '$(arg Y)'
25+
-model quadrotor"
26+
respawn="false" output="screen"/>
27+
28+
<!-- start robot state publisher -->
29+
<!--
30+
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen" >
31+
<param name="publish_frequency" type="double" value="50.0" />
32+
<param name="tf_prefix" type="string" value="" />
33+
</node>
34+
-->
35+
<!--
36+
<node name="ground_truth_to_tf" pkg="message_to_tf" type="message_to_tf" output="screen">
37+
<param name="odometry_topic" value="ground_truth/state" />
38+
<param name="frame_id" value="nav" />
39+
</node>
40+
-->
41+
<!-- node name="hector_pose_estimation" pkg="hector_pose_estimation" type="hector_pose_estimation_node" output="screen"/-->
42+
43+
</launch>
44+

Gazebo/license.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Copyright (c) 2017, The MathWorks, Inc.
2+
All rights reserved.
3+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
5+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
6+
3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings.
7+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
348 KB
Binary file not shown.

0 commit comments

Comments
 (0)