diff --git a/README.md b/README.md new file mode 100644 index 0000000..cdeb03e --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Autonomous Robotics Course +## Instructor: [Eng.Khaled Gabr](https://github.com/khaledgabr77) | Robotics Corner Academy + +![Course Level](https://img.shields.io/badge/Level-Beginner-green.svg) +![ROS](https://img.shields.io/badge/skills-ROS-green.svg) +![Robotics](https://img.shields.io/badge/skills-Robotics-green.svg) +![Language](https://img.shields.io/badge/Language-Python-blue.svg) +![Language](https://img.shields.io/badge/Language-C++-blue.svg) + +
+ click to show course content + + ### Course Content + + - Introduction to Linux, Terminal, and Shell + - Python Programming + - C++ Programming + - Introduction to ROS and ROS installation + - ROS Core Concepts: + - Master + - Nodes + - Topics + - Messages + - Services + - ROS Labs (rostopic, rosmsg, rosnode, rosservice) + - Creating a ROS WorkSpace and Packages + - Writing a ROS Publisher and Subscriber + - Writing a ROS Service and Client + - Creating a Custom ROS Message + - ROS Tools: + - Launch files + - ROS Bag + - RQT + - Remap + - Gazebo, RVIZ: creating a custom robot using Gazebo + - Creating a custom robot using URDF + - Adding Gazebo plugins with ROS + - Kinematics with ROS + - Turtlebot3 Lab + - ROS project + - TF ROS + - 2D and 3D Frames + - Transformations + - Localization: + - Kalman Filter + - MCL + - AMCL Package + - SLAM + - Navigation +
+ + + +## ROS Tasks + +> Note: All nodes written in C++ and Python also. + +### Task 1 +* [count_ws](Task_1/count_ws) + * publisher and subscriber to start count from 100 until the user uses CTRL C. + * ![](Task_1/count_ws/rosgraph.png) +* [nomeer_ws](Task_1/nomeer_ws) + * publisher and subscriber using String msg("I am Learning Robotics and ROS") until the user uses CTRL C. + * ![](Task_1/nomeer_ws/rosgraph.png) + +--- +### Task 2 +* [nomeer_robot_ws](Task_2/nomeer_robot_ws) + * move_pkg with robot_py.launch file. + * publish data to the /cmd_vel topic. + * Modify the code in order to print the odometry of the robot. + * Python file that creates a publisher that indicates the age of the robot + + ![](Task_2/nomeer_robot_ws/rosgraph.png) + +--- +### Task 3 +* [control_nomeer_roboot_ws](Task_3/control_nomeer_roboot_ws) + * Users can input a linear (x) velocity in the range [2,6] (floating point allowed) + * Users can input an angular (z) velocity [2,6] (floating point allowed) + * another node to publish data to the /cmd_vel topic + + ![](Task_3/control_nomeer_roboot_ws/rosgraph.png) + +--- +### Task 4 +* [nomeer_ws](Task_4/nomeer_ws) + * publisher and subscriber to count from 0 until the user uses CTRL C. + * message nodes that publish Complex(real, imaginary) numbers. + * a service that can count the number of words, ex: i love you >> 3, you are the best >> 4. [![](https://img.shields.io/badge/-issue-critical.svg)](https://github.com/nomeera/Autonomous-Robotics-Course/tree/master/4.ROS/Tasks/Task_4/nomeer_ws/src/n_words_pkg) + + ![](Task_4/nomeer_ws/rosgraph.png) + +--- +### Task 5 +* [gazebo](Task_5/src) + * first gazebo task + * create Model(Robot) & Environment + * Adding the Environment + Model inside a World + + + +--- +### Task 6 +* [URDF](Task_6/src/nomeer_xacro_pkg/urdf/) + * [Tasks 6.1:](/4.ROS/Tasks/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer1_robot.xacro) + - Create custom robot using URDF/XACRO the robot should have: + - 4 driver wheels + - Normal Camera, the camera should be in front of robot. + - Lidar should be at the center of robot. + + ![](Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/urdf_task1.jpeg) + --- + * [Tasks 6.2:](Task_7/src/robot_description/urdf/robot.xacro) + - Create custom robot using URDF/XACRO the robot should have: + - 4 driver wheels OR 2 driver wheels and 1 driven free wheel(Castor wheel) + - Normal Camera, the camera should be in front of robot. + - the robot should have a tour at least 1m height attached with last edge of robot. + - 1 Depth Camera(Xbox camera, RealSense Camera,..), the camera should be attached to the tour and at least at height 1m of robot. + - Lidar should be at the center of robot. + + ![](Task_7/src/robot_description/urdf/robot.jpeg) + +--- +### Task 7 +* [Gazebo Plugin](/4.ROS/Tasks/Task_7/src) + * Add Gazebo Plugin (lidar, camera, diff) for [Task 6.2](Task_7/src/robot_description/urdf/robot.xacro) Robot. ([gazebo.xacro](4.ROS/Tasks/Task_7/src/robot_description/urdf/gazebo.xacro)) + * download .stl or .dae file for the lidar and added to mesh folder also added to your URDF + * create your world in gazebo + * launching the robot in your world ([robot.launch](Task_7/src/robot_gazebo/launch/robot.launch)) diff --git a/Task_1/count_ws/rosgraph.png b/Task_1/count_ws/rosgraph.png new file mode 100644 index 0000000..b98c10f Binary files /dev/null and b/Task_1/count_ws/rosgraph.png differ diff --git a/Task_1/count_ws/src/CMakeLists.txt b/Task_1/count_ws/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_1/count_ws/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_1/count_ws/src/SubCount_pkg/CMakeLists.txt b/Task_1/count_ws/src/SubCount_pkg/CMakeLists.txt new file mode 100644 index 0000000..7f8bf6e --- /dev/null +++ b/Task_1/count_ws/src/SubCount_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(SubCount_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES SubCount_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/SubCount_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(Subscriber src/sub.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +target_link_libraries(Subscriber + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_SubCount_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_1/count_ws/src/SubCount_pkg/package.xml b/Task_1/count_ws/src/SubCount_pkg/package.xml new file mode 100644 index 0000000..c039053 --- /dev/null +++ b/Task_1/count_ws/src/SubCount_pkg/package.xml @@ -0,0 +1,68 @@ + + + SubCount_pkg + 0.0.0 + The SubCount_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_1/count_ws/src/SubCount_pkg/scripts/sub.py b/Task_1/count_ws/src/SubCount_pkg/scripts/sub.py new file mode 100755 index 0000000..076d012 --- /dev/null +++ b/Task_1/count_ws/src/SubCount_pkg/scripts/sub.py @@ -0,0 +1,19 @@ +#!/usr/bin/python3 + +import rospy +from std_msgs.msg import Int32 + +def listener(): + # create node + rospy.init_node("Listener") + # subscribe count_topic + rospy.Subscriber("count_topic", Int32, callback) + rospy.spin() # processes incoming messages until the node is shut down. + +def callback(count): # callback function to handle msg + rospy.loginfo("count = %d", count.data) + + + +if __name__ == "__main__": + listener() \ No newline at end of file diff --git a/Task_1/count_ws/src/SubCount_pkg/src/sub.cpp b/Task_1/count_ws/src/SubCount_pkg/src/sub.cpp new file mode 100755 index 0000000..fd8e04a --- /dev/null +++ b/Task_1/count_ws/src/SubCount_pkg/src/sub.cpp @@ -0,0 +1,23 @@ +#include "ros/ros.h" +#include "std_msgs/Int32.h" + +// callback function to handle messgae +void callback(const std_msgs::Int32::ConstPtr& msg) // ConstPtr: smart pointer that provides automatic memory management for the message. +{ + ROS_INFO("count = %d", msg->data); // print msg on screen | -> point to class +} + +int main(int argc, char** argv) +{ + // create node + ros::init(argc, argv, "Subscriber"); + ros::NodeHandle nh; + + // create subscriber object + ros::Subscriber sub; + // subscribe message from counter topic + sub = nh.subscribe("counter", 1, callback); + ros::spin(); + + return 0; +} \ No newline at end of file diff --git a/Task_1/count_ws/src/pubCount_pkg/CMakeLists.txt b/Task_1/count_ws/src/pubCount_pkg/CMakeLists.txt new file mode 100644 index 0000000..33fed32 --- /dev/null +++ b/Task_1/count_ws/src/pubCount_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(pubCount_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES pubCount_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/pubCount_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(Publisher src/pub.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(Publisher + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_pubCount_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_1/count_ws/src/pubCount_pkg/package.xml b/Task_1/count_ws/src/pubCount_pkg/package.xml new file mode 100644 index 0000000..3b9dfd9 --- /dev/null +++ b/Task_1/count_ws/src/pubCount_pkg/package.xml @@ -0,0 +1,68 @@ + + + pubCount_pkg + 0.0.0 + The pubCount_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_1/count_ws/src/pubCount_pkg/scripts/pub.py b/Task_1/count_ws/src/pubCount_pkg/scripts/pub.py new file mode 100755 index 0000000..3f267a2 --- /dev/null +++ b/Task_1/count_ws/src/pubCount_pkg/scripts/pub.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + +import rospy +from std_msgs.msg import Int32 + +def talker(): + # create node + rospy.init_node("Talker") + # create topic + pub = rospy.Publisher("count_topic", Int32, queue_size=1) + rate = rospy.Rate(1) # publish rate = 1 hz + + count_msg = 100 + while not rospy.is_shutdown(): # untill ROS shutdown + count_msg += 1 + rospy.loginfo(count_msg) # print count_msg on screen + pub.publish(count_msg) # publish count_msg on /count_topic + rate.sleep() + +if __name__ == "__main__": + try: + talker() + except rospy.ROSInterruptException: + pass \ No newline at end of file diff --git a/Task_1/count_ws/src/pubCount_pkg/src/pub.cpp b/Task_1/count_ws/src/pubCount_pkg/src/pub.cpp new file mode 100755 index 0000000..0af1237 --- /dev/null +++ b/Task_1/count_ws/src/pubCount_pkg/src/pub.cpp @@ -0,0 +1,27 @@ +#include +#include + +int main(int argc, char** argv) // argc & argv to make node conect each other in ROS system +{ + // crate node + ros::init(argc, argv, "Publisher"); + ros::NodeHandle nh; + ros::Rate rate(1); // publish rate = 1 hz + // create publisher object + ros::Publisher pub; + // publisher object publisher via counter topic + pub = nh.advertise("counter", 1); + + std_msgs::Int32 count; + count.data = 100; // create count msg + + while (ros::ok()) // loop until ROS shutdowm + { + pub.publish(count); // publish msg + ros::spinOnce(); // + rate.sleep(); // to make sure that we publish with 1 hz + ++count.data; + } + + return 0; +} \ No newline at end of file diff --git a/Task_1/nomeer_ws/rosgraph.png b/Task_1/nomeer_ws/rosgraph.png new file mode 100644 index 0000000..dfe1527 Binary files /dev/null and b/Task_1/nomeer_ws/rosgraph.png differ diff --git a/Task_1/nomeer_ws/src/CMakeLists.txt b/Task_1/nomeer_ws/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_1/nomeer_ws/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_1/nomeer_ws/src/pub_pkg/CMakeLists.txt b/Task_1/nomeer_ws/src/pub_pkg/CMakeLists.txt new file mode 100644 index 0000000..d133741 --- /dev/null +++ b/Task_1/nomeer_ws/src/pub_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(pub_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES pub_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/pub_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(publisher src/pub.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(publisher + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_pub_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_1/nomeer_ws/src/pub_pkg/package.xml b/Task_1/nomeer_ws/src/pub_pkg/package.xml new file mode 100644 index 0000000..a3e9bde --- /dev/null +++ b/Task_1/nomeer_ws/src/pub_pkg/package.xml @@ -0,0 +1,68 @@ + + + pub_pkg + 0.0.0 + The pub_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_1/nomeer_ws/src/pub_pkg/scripts/pub.py b/Task_1/nomeer_ws/src/pub_pkg/scripts/pub.py new file mode 100755 index 0000000..8867262 --- /dev/null +++ b/Task_1/nomeer_ws/src/pub_pkg/scripts/pub.py @@ -0,0 +1,20 @@ +#!/usr/bin/python3 + +import rospy +from std_msgs.msg import String + +def Talker(): + rospy.init_node("talker") + pub = rospy.Publisher("msg_topic", String, queue_size=1) + rate = rospy.Rate(1) + + msg = "I am Learning Robotics and ROS" + while not rospy.is_shutdown(): + pub.publish(msg) + rate.sleep() + +if __name__ == "__main__": + try: + Talker() + except rospy.ROSInterruptException: + pass \ No newline at end of file diff --git a/Task_1/nomeer_ws/src/pub_pkg/src/pub.cpp b/Task_1/nomeer_ws/src/pub_pkg/src/pub.cpp new file mode 100755 index 0000000..c92f7db --- /dev/null +++ b/Task_1/nomeer_ws/src/pub_pkg/src/pub.cpp @@ -0,0 +1,27 @@ +#include +#include +#include + +int main(int argc, char** argv) +{ + ros::init(argc, argv, "publisher"); + ros::NodeHandle nh; + ros::Rate rate(1); + + ros::Publisher pub; + pub = nh.advertise("string_topic",1); + + std_msgs::String msg; + std::stringstream ss; + ss << "I am Learning Robotics and ROS"; + msg.data = ss.str(); + + while(ros::ok()) + { + pub.publish(msg); + ros::spinOnce(); + rate.sleep(); + } + + return 0; +} \ No newline at end of file diff --git a/Task_1/nomeer_ws/src/sub_pkg/CMakeLists.txt b/Task_1/nomeer_ws/src/sub_pkg/CMakeLists.txt new file mode 100644 index 0000000..d847b9b --- /dev/null +++ b/Task_1/nomeer_ws/src/sub_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(sub_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES sub_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/sub_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(subscriber src/sub.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(subscriber + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_sub_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_1/nomeer_ws/src/sub_pkg/package.xml b/Task_1/nomeer_ws/src/sub_pkg/package.xml new file mode 100644 index 0000000..0b3a8e7 --- /dev/null +++ b/Task_1/nomeer_ws/src/sub_pkg/package.xml @@ -0,0 +1,68 @@ + + + sub_pkg + 0.0.0 + The sub_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_1/nomeer_ws/src/sub_pkg/scripts/sub.py b/Task_1/nomeer_ws/src/sub_pkg/scripts/sub.py new file mode 100755 index 0000000..dd7cff9 --- /dev/null +++ b/Task_1/nomeer_ws/src/sub_pkg/scripts/sub.py @@ -0,0 +1,17 @@ +#!/usr/bin/python3 + +import rospy +from std_msgs.msg import String + +def Lisener(): + rospy.init_node("lisener") + sub = rospy.Subscriber("msg_topic", String, callback) + rospy.spin() + + +def callback(msg): + rospy.loginfo("%s", msg.data) + + +if __name__ == "__main__": + Lisener() \ No newline at end of file diff --git a/Task_1/nomeer_ws/src/sub_pkg/src/sub.cpp b/Task_1/nomeer_ws/src/sub_pkg/src/sub.cpp new file mode 100755 index 0000000..9d7b915 --- /dev/null +++ b/Task_1/nomeer_ws/src/sub_pkg/src/sub.cpp @@ -0,0 +1,18 @@ +#include +#include + +void callback(const std_msgs::String::ConstPtr& msg) +{ + ROS_INFO("%s", msg->data.c_str()); +} +int main(int argc, char** argv) +{ + ros::init(argc, argv, "subscriber"); + ros::NodeHandle nh; + ros::Subscriber sub; + sub = nh.subscribe("string_topic",1,callback); + ros::spin(); + + + return 0; +} \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/rosgraph.png b/Task_2/nomeer_robot_ws/rosgraph.png new file mode 100644 index 0000000..4da797d Binary files /dev/null and b/Task_2/nomeer_robot_ws/rosgraph.png differ diff --git a/Task_2/nomeer_robot_ws/src/CMakeLists.txt b/Task_2/nomeer_robot_ws/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/CMakeLists.txt b/Task_2/nomeer_robot_ws/src/move_pkg/CMakeLists.txt new file mode 100644 index 0000000..e52514f --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/CMakeLists.txt @@ -0,0 +1,218 @@ +cmake_minimum_required(VERSION 3.0.2) +project(move_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + message_generation +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder + add_message_files( + FILES + Age.msg +# Message2.msg + ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here + generate_messages( + DEPENDENCIES + std_msgs + ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES move_pkg + CATKIN_DEPENDS roscpp rospy std_msgs message_runtime +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/move_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(pub_twist_cpp src/pub_twistC.cpp) +add_executable(sub_odom_cpp src/sub_odomC.cpp) +add_executable(pub_age_node_cpp src/pub_ageC.cpp) +add_executable(sub_age_node_cpp src/sub_ageC.cpp) +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(pub_twist_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(sub_odom_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(pub_age_node_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(sub_age_node_cpp + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_move_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_cpp.launch b/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_cpp.launch new file mode 100755 index 0000000..ee14a44 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_cpp.launch @@ -0,0 +1,6 @@ + + + + + + diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_py.launch b/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_py.launch new file mode 100755 index 0000000..e499ba9 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/launch/robot_py.launch @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/msg/Age.msg b/Task_2/nomeer_robot_ws/src/move_pkg/msg/Age.msg new file mode 100644 index 0000000..589d725 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/msg/Age.msg @@ -0,0 +1,3 @@ +int64 days +int64 months +int64 years \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/package.xml b/Task_2/nomeer_robot_ws/src/move_pkg/package.xml new file mode 100644 index 0000000..ae3c00f --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/package.xml @@ -0,0 +1,71 @@ + + + move_pkg + 0.0.0 + The move_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + message_generation + roscpp + rospy + std_msgs + message_runtime + roscpp + rospy + std_msgs + message_runtime + + + + + + + + diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_age.py b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_age.py new file mode 100755 index 0000000..a7f9961 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_age.py @@ -0,0 +1,35 @@ +#!/usr/bin/python3 +''' +use custom message Age.msg to define robot age +publish robot age via /age_topic +''' + +import rospy +from move_pkg.msg import Age + +def pub_age(): + # create pub node + rospy.init_node("pub_age_node") + # create publisher object and publish via /age_topic + pub = rospy.Publisher("age_topic",Age,queue_size=1) + rate = rospy.Rate(1) + + # define robot age + age = Age() + age.days = 17 + age.months = 3 + age.years = 22 + + # publish message + while not rospy.is_shutdown(): + pub.publish(age) + rate.sleep() + + + + +if __name__ == "__main__": + try: + pub_age() + except rospy.ROSInterruptException: + pass diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_twist.py b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_twist.py new file mode 100755 index 0000000..c3ed841 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/pub_twist.py @@ -0,0 +1,38 @@ +#!/usr/bin/python3 + +''' +create node to move turtle1 robot +publish Twist msg via /turtle1/cmd_vel +''' + +import rospy +from geometry_msgs.msg import Twist + + +def pub_twist(): + # create publisher node + rospy.init_node("pub_twist") + + # create publisher object & topic + pub = rospy.Publisher("/turtle1/cmd_vel", Twist, queue_size=1) + + rate = rospy.Rate(1) # publish twish with 1 hz rate + + # define twist msg + twist = Twist() + twist.linear.x = 1 + twist.angular.z = 1 # robot will rotate in circle + + # publish msg + while not rospy.is_shutdown(): + rospy.loginfo("\n") + rospy.loginfo(twist) + pub.publish(twist) + rate.sleep() # ensure that node publish with 1 hz + + +if __name__ == "__main__": + try: + pub_twist() + except rospy.ROSInternalException: + pass diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_age.py b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_age.py new file mode 100755 index 0000000..e2ab2a8 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_age.py @@ -0,0 +1,19 @@ +#!/usr/bin/python3 + +import rospy +from move_pkg.msg import Age + +def callback(age): + rospy.loginfo("\n") + rospy.loginfo(age) + +def sub_age(): + rospy.init_node("sub_age_node") + sub = rospy.Subscriber("age_topic", Age,callback) + rospy.spin() + + + + +if __name__ == "__main__": + sub_age() \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_odom.py b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_odom.py new file mode 100755 index 0000000..5e3dd95 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/scripts/sub_odom.py @@ -0,0 +1,25 @@ +#!/usr/bin/python3 + +''' +we need to prinet the odometry of the robot +we will subscribe /odom topic +''' +import rospy +from nav_msgs.msg import Odometry + +def callback(odom): + rospy.loginfo(odom) # print whole odometry data on screen + +def sub_odom(): + # creat subscribe node + rospy.init_node("sub_odom") + + # subscribe /odom topic + rospy.Subscriber("/odom", Odometry,callback) + rospy.spin() + + + + +if __name__ == "__main__": + sub_odom() diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_ageC.cpp b/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_ageC.cpp new file mode 100755 index 0000000..177e7fa --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_ageC.cpp @@ -0,0 +1,24 @@ +#include +#include + +int main(int argc, char** argv) +{ + ros::init(argc, argv,"pub_age_node_cpp"); + ros::NodeHandle nh; + ros::Publisher pub = nh.advertise("age_topic_cpp",1); + ros::Rate rate(1); + + move_pkg::Age age; + age.days = 17; + age.months = 3; + age.years = 22; + + while (ros::ok()) + { + pub.publish(age); + ros::spinOnce(); + rate.sleep(); + } + + return 0; +} \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_twistC.cpp b/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_twistC.cpp new file mode 100755 index 0000000..332042e --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/src/pub_twistC.cpp @@ -0,0 +1,31 @@ +#include +#include + +int main(int argc, char** argv) +{ + // create publisher node + ros::init(argc, argv, "pub_twist_cpp"); + ros::NodeHandle nh; // to create a communication interface between your ROS node and the rest of the ROS network + + // create publisher object + ros::Publisher pub; + // pub object publish via /turtle1/cmd_vel object + pub = nh.advertise("/turtle1/cmd_vel",1); + ros::Rate rate(1); // publish twish with 1 hz rate + + // define twist msg + geometry_msgs::Twist twist; + twist.linear.x = 1; + twist.angular.z = 1; // robot will rotate in circle + + // publish msg + while(ros::ok()) + { + pub.publish(twist); + ros::spinOnce(); // used to handle incoming ROS messages + rate.sleep(); // ensure that node publish with 1 hz + + } + + return 0; +} \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_ageC.cpp b/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_ageC.cpp new file mode 100755 index 0000000..98cefb6 --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_ageC.cpp @@ -0,0 +1,20 @@ +#include +#include + +void callback(const move_pkg::Age::ConstPtr& age) +{ + float days = age->days; + float months = age->months; + float years = age->years; + ROS_INFO("\ndays = %f\nmonths = %f\ndays = %f\n", days, months, years); +} + +int main(int argc, char** argv) +{ + ros::init(argc, argv, "sub_age_node_cpp"); + ros::NodeHandle nh; + ros::Subscriber sub = nh.subscribe("age_topic_cpp", 1, callback); + ros::spin(); + + return 0; +} \ No newline at end of file diff --git a/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_odomC.cpp b/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_odomC.cpp new file mode 100755 index 0000000..9fa65bd --- /dev/null +++ b/Task_2/nomeer_robot_ws/src/move_pkg/src/sub_odomC.cpp @@ -0,0 +1,47 @@ +#include +#include + +void printOdomData(const nav_msgs::Odometry::ConstPtr& odom) +{ + // print pose and twist from Odometry + double x = odom->pose.pose.position.x; + double y = odom->pose.pose.position.y; + double z = odom->pose.pose.position.z; + ROS_INFO("Position: [%f, %f, %f]", x, y, z); + + double qx = odom->pose.pose.orientation.x; + double qy = odom->pose.pose.orientation.y; + double qz = odom->pose.pose.orientation.z; + double qw = odom->pose.pose.orientation.w; + ROS_INFO("Orientation: [%f, %f, %f, %f]", qx, qy, qz, qw); + + double vx = odom->twist.twist.linear.x; + double vy = odom->twist.twist.linear.y; + double vz = odom->twist.twist.linear.z; + ROS_INFO("Linear Velocity: [%f, %f, %f]", vx, vy, vz); + + double wx = odom->twist.twist.angular.x; + double wy = odom->twist.twist.angular.y; + double wz = odom->twist.twist.angular.z; + ROS_INFO("Angular Velocity: [%f, %f, %f]", wx, wy, wz); +} + +void callback(const nav_msgs::Odometry::ConstPtr& odom) +{ + printOdomData(odom); +} + +int main(int argc, char** argv) +{ + // creat subscribe node + ros::init(argc, argv, "sub_odom_cpp"); + ros::NodeHandle nh; + + // create subscribe object + ros::Subscriber sub; + // subscribe /odom topic + sub = nh.subscribe("/odom",1000, callback); + ros::spin(); + + return 0; +} \ No newline at end of file diff --git a/Task_3/control_nomeer_roboot_ws/rosgraph.png b/Task_3/control_nomeer_roboot_ws/rosgraph.png new file mode 100644 index 0000000..34d3c2b Binary files /dev/null and b/Task_3/control_nomeer_roboot_ws/rosgraph.png differ diff --git a/Task_3/control_nomeer_roboot_ws/src/CMakeLists.txt b/Task_3/control_nomeer_roboot_ws/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/CMakeLists.txt b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/CMakeLists.txt new file mode 100644 index 0000000..1d2681c --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/CMakeLists.txt @@ -0,0 +1,210 @@ +cmake_minimum_required(VERSION 3.0.2) +project(move_turtlesim) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES move_turtlesim +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/move_turtlesim.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(pub_twist_cpp src/move_turtlesim.cpp) +add_executable(input_user_cpp src/input_user.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(pub_twist_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(input_user_cpp + ${catkin_LIBRARIES} +) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_move_turtlesim.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/package.xml b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/package.xml new file mode 100644 index 0000000..4e49be2 --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/package.xml @@ -0,0 +1,68 @@ + + + move_turtlesim + 0.0.0 + The move_turtlesim package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/input_user.py b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/input_user.py new file mode 100755 index 0000000..f64559e --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/input_user.py @@ -0,0 +1,49 @@ +#!/usr/bin/python3 + +''' +create node to move turtle1 robot +publish Twist msg via /turtle1/cmd_vel +Users can input a linear (x) velocity in the range [2,6] +Users can input an angular (z) velocity [1,3]ew +''' + +import rospy +from geometry_msgs.msg import Twist + + +def pub_twist(): + # create publisher node + rospy.init_node("input_user") + + # create publisher object & topic + pub = rospy.Publisher("/turtle1/cmd_vel", Twist, queue_size=1) + + rate = rospy.Rate(1) # publish twish with 1 hz rate + + # ask user to input linear.x & angular.z + while not rospy.is_shutdown(): + # define twist msg + try: + twist = Twist() + twist.linear.x = float(input("Enter linear.x value [2-6]: ")) + twist.angular.z = float(input("Enter angular.z value [2-6]: ")) + + # ensure that linear.x & angular.z = [2-6] + if 2 <= twist.linear.x <= 6 and 2 <= twist.angular.z <= 6: + break + else: + print("\nPLEASE ENTER VALUE FROM 2 TO 6\n") + except ValueError: # error handling + print("\ninvalid input, try again") + print("PLEASE ENTER VALUE FROM 2 TO 6\n") + + + # publish msg + pub.publish(twist) + + +if __name__ == "__main__": + try: + pub_twist() + except rospy.ROSInternalException: + pass diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/move_turtlesim.py b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/move_turtlesim.py new file mode 100755 index 0000000..c3ed841 --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/scripts/move_turtlesim.py @@ -0,0 +1,38 @@ +#!/usr/bin/python3 + +''' +create node to move turtle1 robot +publish Twist msg via /turtle1/cmd_vel +''' + +import rospy +from geometry_msgs.msg import Twist + + +def pub_twist(): + # create publisher node + rospy.init_node("pub_twist") + + # create publisher object & topic + pub = rospy.Publisher("/turtle1/cmd_vel", Twist, queue_size=1) + + rate = rospy.Rate(1) # publish twish with 1 hz rate + + # define twist msg + twist = Twist() + twist.linear.x = 1 + twist.angular.z = 1 # robot will rotate in circle + + # publish msg + while not rospy.is_shutdown(): + rospy.loginfo("\n") + rospy.loginfo(twist) + pub.publish(twist) + rate.sleep() # ensure that node publish with 1 hz + + +if __name__ == "__main__": + try: + pub_twist() + except rospy.ROSInternalException: + pass diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/input_user.cpp b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/input_user.cpp new file mode 100755 index 0000000..aef05f0 --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/input_user.cpp @@ -0,0 +1,53 @@ +#include +#include +#include + +int main(int argc, char** argv) +{ + // create publisher node + ros::init(argc, argv, "input_user_cpp"); + ros::NodeHandle nh; // to create a communication interface between your ROS node and the rest of the ROS network + + // create publisher object + ros::Publisher pub; + // pub object publish via /turtle1/cmd_vel object + pub = nh.advertise("/turtle1/cmd_vel",1); + ros::Rate rate(5); // publish twish with 1 hz rate + + // define twist object + geometry_msgs::Twist twist; + + // ask user to input linear.x & angular.z + while (ros::ok()) + { + std::cout << "Enter linear.x value [2-6]: " ; + std::cin >> twist.linear.x ; + std::cout << "Enter angular.z value [2-6]: " ; + std::cin >> twist.angular.z ; + + // error handling to check if user enter int value or no + { + // add code in this section + } + + // ensure that linear.x & angular.z = [2-6] + if (twist.linear.x >= 2 && twist.linear.x <= 6 && + twist.angular.z >= 2 && twist.angular.z <= 6) + break; + else + std::cout << "\nPLEASE ENTER VALUE FROM 2 TO 6\n"; + + } + + // to ensure that node will publish msg just one time and prevent node to shutdown before publishing + // rate.sleep return true after node jumped forward in time + while(!rate.sleep()) + { + pub.publish(twist); + ros::spinOnce(); // used to handle incoming ROS messages + } + + + + return 0; +} \ No newline at end of file diff --git a/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/move_turtlesim.cpp b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/move_turtlesim.cpp new file mode 100755 index 0000000..332042e --- /dev/null +++ b/Task_3/control_nomeer_roboot_ws/src/move_turtlesim/src/move_turtlesim.cpp @@ -0,0 +1,31 @@ +#include +#include + +int main(int argc, char** argv) +{ + // create publisher node + ros::init(argc, argv, "pub_twist_cpp"); + ros::NodeHandle nh; // to create a communication interface between your ROS node and the rest of the ROS network + + // create publisher object + ros::Publisher pub; + // pub object publish via /turtle1/cmd_vel object + pub = nh.advertise("/turtle1/cmd_vel",1); + ros::Rate rate(1); // publish twish with 1 hz rate + + // define twist msg + geometry_msgs::Twist twist; + twist.linear.x = 1; + twist.angular.z = 1; // robot will rotate in circle + + // publish msg + while(ros::ok()) + { + pub.publish(twist); + ros::spinOnce(); // used to handle incoming ROS messages + rate.sleep(); // ensure that node publish with 1 hz + + } + + return 0; +} \ No newline at end of file diff --git a/Task_4/nomeer_ws/rosgraph.png b/Task_4/nomeer_ws/rosgraph.png new file mode 100644 index 0000000..0cbc27d Binary files /dev/null and b/Task_4/nomeer_ws/rosgraph.png differ diff --git a/Task_4/nomeer_ws/src/CMakeLists.txt b/Task_4/nomeer_ws/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_4/nomeer_ws/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/CMakeLists.txt b/Task_4/nomeer_ws/src/cmplx_num_pkg/CMakeLists.txt new file mode 100644 index 0000000..d1ad538 --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/CMakeLists.txt @@ -0,0 +1,210 @@ +cmake_minimum_required(VERSION 3.0.2) +project(cmplx_num_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + message_generation +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder + add_message_files( + FILES + cmplx.msg +# Message2.msg + ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here + generate_messages( + DEPENDENCIES + std_msgs + ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES cmplx_num_pkg + CATKIN_DEPENDS roscpp rospy std_msgs message_runtime +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/cmplx_num_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(pub_cmplx_cpp src/pub_cmplx.cpp) +add_executable(sub_cmplx_cpp src/sub_cmplx.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(pub_cmplx_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(sub_cmplx_cpp + ${catkin_LIBRARIES} + ) +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_cmplx_num_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/msg/cmplx.msg b/Task_4/nomeer_ws/src/cmplx_num_pkg/msg/cmplx.msg new file mode 100755 index 0000000..8316ea0 --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/msg/cmplx.msg @@ -0,0 +1,2 @@ +float64 real +float64 imaginary diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/package.xml b/Task_4/nomeer_ws/src/cmplx_num_pkg/package.xml new file mode 100644 index 0000000..a2853cb --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/package.xml @@ -0,0 +1,71 @@ + + + cmplx_num_pkg + 0.0.0 + The cmplx_num_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + message_generation + roscpp + rospy + std_msgs + message_runtime + roscpp + rospy + std_msgs + message_runtime + + + + + + + + diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/pub_cmplx.py b/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/pub_cmplx.py new file mode 100755 index 0000000..3166849 --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/pub_cmplx.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +import rospy +from cmplx_num_pkg.msg import cmplx +import random + +def pub_cmplx(): + # node & topic + rospy.init_node("pub_cmplx") + pub = rospy.Publisher("cmplx_topic", cmplx, queue_size=1) + rate = rospy.Rate(1) + + # message + cmplxNum = cmplx() + + # publishing + while not rospy.is_shutdown(): + cmplxNum.real = round(random.random() * 100,3) + cmplxNum.imaginary = round(random.random() * 100,3) + + pub.publish(cmplxNum) + rate.sleep() + + + +if __name__ == "__main__": + try: + pub_cmplx() + except rospy.ROSInterruptException: + pass diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/sub_cmplx.py b/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/sub_cmplx.py new file mode 100755 index 0000000..569ce13 --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/scripts/sub_cmplx.py @@ -0,0 +1,16 @@ +#!/usr/bin/python3 + +import rospy +from cmplx_num_pkg.msg import cmplx + + +def callback(cmplx): + rospy.loginfo("(%.3fi + %.3fj)", cmplx.real, cmplx.imaginary) +def sub_cmplx(): + rospy.init_node("sub_cmplx") + sub = rospy.Subscriber("cmplx_topic", cmplx, callback) + rospy.spin() + + +if __name__ == "__main__": + sub_cmplx() \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/src/pub_cmplx.cpp b/Task_4/nomeer_ws/src/cmplx_num_pkg/src/pub_cmplx.cpp new file mode 100755 index 0000000..01d1985 --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/src/pub_cmplx.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +int main(int argc, char** argv) +{ + // node & topic + ros::init(argc, argv, "pub_cmplx_cpp"); + ros::NodeHandle nh; + ros::Publisher pub = nh.advertise("cmplx_topic_cpp",1); + ros::Rate rate(1); + + // message + cmplx_num_pkg::cmplx cmplxNum; + + while (ros::ok()) + { + srand(time(0)); + cmplxNum.real = ( (float)rand() / RAND_MAX) * 100; + cmplxNum.imaginary = ( (float)rand() / RAND_MAX) * 100; + pub.publish(cmplxNum); + ros::spinOnce(); + rate.sleep(); + } + + + return 0; +} \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/cmplx_num_pkg/src/sub_cmplx.cpp b/Task_4/nomeer_ws/src/cmplx_num_pkg/src/sub_cmplx.cpp new file mode 100755 index 0000000..dff2fdd --- /dev/null +++ b/Task_4/nomeer_ws/src/cmplx_num_pkg/src/sub_cmplx.cpp @@ -0,0 +1,18 @@ +#include +#include + + +void callback(const cmplx_num_pkg::cmplx::ConstPtr& cmplxNum) +{ + ROS_INFO("(%.3fi + %.3fj)", cmplxNum->real, cmplxNum->imaginary); + +} +int main(int argc, char** argv) +{ + ros::init(argc, argv, "sub_cmplx_cpp"); + ros::NodeHandle nh; + ros::Subscriber sub = nh.subscribe("cmplx_topic_cpp",1,callback); + ros::spin(); + + return 0; +} \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/count_pkg/CMakeLists.txt b/Task_4/nomeer_ws/src/count_pkg/CMakeLists.txt new file mode 100644 index 0000000..2fdd0d3 --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/CMakeLists.txt @@ -0,0 +1,211 @@ +cmake_minimum_required(VERSION 3.0.2) +project(count_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES count_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/count_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +add_executable(pub_count_cpp src/pub_count.cpp) +add_executable(sub_count_cpp src/sub_count.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against + target_link_libraries(pub_count_cpp + ${catkin_LIBRARIES} + ) + target_link_libraries(sub_count_cpp + ${catkin_LIBRARIES} + ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_count_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_4/nomeer_ws/src/count_pkg/package.xml b/Task_4/nomeer_ws/src/count_pkg/package.xml new file mode 100644 index 0000000..7ab3bc9 --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/package.xml @@ -0,0 +1,68 @@ + + + count_pkg + 0.0.0 + The count_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_4/nomeer_ws/src/count_pkg/scripts/pub_count.py b/Task_4/nomeer_ws/src/count_pkg/scripts/pub_count.py new file mode 100755 index 0000000..ba1df62 --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/scripts/pub_count.py @@ -0,0 +1,35 @@ +#!/usr/bin/python3 + +''' +count from 0 until user input ctrl+c +we need to publish count msg +''' + +import rospy +from std_msgs.msg import Int32 + + +def pub_count(): + # create publisher node + rospy.init_node("pub_count") + + # create publisher object & topic + pub = rospy.Publisher("count_topic", Int32, queue_size=1) + + rate = rospy.Rate(1) # publish count with 1 hz rate + + # define count msg + count = 0 + + # publish msg + while not rospy.is_shutdown(): + rospy.loginfo(count) + pub.publish(count) + rate.sleep() # ensure that node publish with 1 hz + count +=1 + +if __name__ == "__main__": + try: + pub_count() + except rospy.ROSInternalException: + pass diff --git a/Task_4/nomeer_ws/src/count_pkg/scripts/sub_count.py b/Task_4/nomeer_ws/src/count_pkg/scripts/sub_count.py new file mode 100755 index 0000000..36b422c --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/scripts/sub_count.py @@ -0,0 +1,17 @@ +#!/usr/bin/python3 + +import rospy +from std_msgs.msg import Int32 + +def callback(count): + rospy.loginfo("\n") + rospy.loginfo(count) + +def sub_age(): + rospy.init_node("sub_count") + sub = rospy.Subscriber("count_topic", Int32,callback) + rospy.spin() + + +if __name__ == "__main__": + sub_age() \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/count_pkg/src/pub_count.cpp b/Task_4/nomeer_ws/src/count_pkg/src/pub_count.cpp new file mode 100755 index 0000000..0d623ba --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/src/pub_count.cpp @@ -0,0 +1,23 @@ +#include +#include + +int main(int argc, char** argv) +{ + ros::init(argc, argv,"pub_count_cpp"); + ros::NodeHandle nh; + ros::Publisher pub = nh.advertise("count_topic_cpp",1); + ros::Rate rate(1); + + std_msgs::Int32 count; + count.data = 0; + + while (ros::ok()) + { + pub.publish(count); + ros::spinOnce(); + rate.sleep(); + ++count.data; + } + + return 0; +} \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/count_pkg/src/sub_count.cpp b/Task_4/nomeer_ws/src/count_pkg/src/sub_count.cpp new file mode 100755 index 0000000..6c1d23d --- /dev/null +++ b/Task_4/nomeer_ws/src/count_pkg/src/sub_count.cpp @@ -0,0 +1,17 @@ +#include +#include + +void callback(const std_msgs::Int32::ConstPtr& count) +{ + ROS_INFO("count: %d", count->data); +} + +int main(int argc, char** argv) +{ + ros::init(argc, argv, "sub_count_cpp"); + ros::NodeHandle nh; + ros::Subscriber sub = nh.subscribe("count_topic_cpp", 1, callback); + ros::spin(); + + return 0; +} \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/n_words_pkg/CMakeLists.txt b/Task_4/nomeer_ws/src/n_words_pkg/CMakeLists.txt new file mode 100644 index 0000000..8062f92 --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(n_words_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + message_generation +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder + add_service_files( + FILES + count_words.srv +# Service2.srv + ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here + generate_messages( + DEPENDENCIES + std_msgs + ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES n_of_words_pkg + CATKIN_DEPENDS roscpp rospy std_msgs message_runtime +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/n_of_words_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +# add_executable(${PROJECT_NAME}_node src/n_of_words_pkg_node.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(${PROJECT_NAME}_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_n_of_words_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_4/nomeer_ws/src/n_words_pkg/package.xml b/Task_4/nomeer_ws/src/n_words_pkg/package.xml new file mode 100644 index 0000000..dd6ba8d --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/package.xml @@ -0,0 +1,71 @@ + + + n_words_pkg + 0.0.0 + The n_words_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + message_generation + roscpp + rospy + std_msgs + message_runtime + roscpp + rospy + std_msgs + message_runtime + + + + + + + + diff --git a/Task_4/nomeer_ws/src/n_words_pkg/scripts/client.py b/Task_4/nomeer_ws/src/n_words_pkg/scripts/client.py new file mode 100755 index 0000000..a9f41fa --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/scripts/client.py @@ -0,0 +1,33 @@ +#!/usr/bin/python3 + +import sys +import rospy +from n_words_pkg.srv import count_words + +# Define a function that acts as the client +def pub_words(words): + # Wait until the service is available + rospy.wait_for_service("countWords") # Name of the service + + try: + # Create a proxy to the service + get_words = rospy.ServiceProxy("countWords", count_words) + + # Call the service and get the response + resp = get_words(words) + # return string from te response + return resp.count + except rospy.ServiceException as e: + print("Service Call failed %s", e) + + +def usage(): + return sys.argv[0] + + +if __name__ == "__main__": + words = sys.argv[0] + print("The sentence you entered: %s", words) + count = pub_words(words) + print("Number of Words: %d") + \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/n_words_pkg/scripts/server.py b/Task_4/nomeer_ws/src/n_words_pkg/scripts/server.py new file mode 100755 index 0000000..be6a36e --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/scripts/server.py @@ -0,0 +1,23 @@ +#!/usr/bin/python3 + +import rospy +from n_words_pkg.srv import count_words, count_wordsRequest, count_wordsResponse + +def num_of_words(req): + req.count = len(req.split(' ')) + print("Number of Words is: %d", req.count) + return count_wordsResponse(req.count) + +def count_words_service(): + # Initialize the service node + rospy.init_node("count_words_service") + # Create the service with the name "count_words_service" and the function to handle the request + s = rospy.Service("countWords", count_words, num_of_words) + # Print a message indicating that the server is ready + print("Ready to count number of words") + # Spin to keep the node running + rospy.spin() + +if __name__ == "__main__": + # Call the server function to start the server node + count_words_service() \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/n_words_pkg/src/client.cpp b/Task_4/nomeer_ws/src/n_words_pkg/src/client.cpp new file mode 100755 index 0000000..789ec54 --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/src/client.cpp @@ -0,0 +1 @@ +// The code is being prepared \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/n_words_pkg/src/server.cpp b/Task_4/nomeer_ws/src/n_words_pkg/src/server.cpp new file mode 100755 index 0000000..789ec54 --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/src/server.cpp @@ -0,0 +1 @@ +// The code is being prepared \ No newline at end of file diff --git a/Task_4/nomeer_ws/src/n_words_pkg/srv/count_words.srv b/Task_4/nomeer_ws/src/n_words_pkg/srv/count_words.srv new file mode 100755 index 0000000..940b837 --- /dev/null +++ b/Task_4/nomeer_ws/src/n_words_pkg/srv/count_words.srv @@ -0,0 +1,5 @@ +string words + +--- + +int32 count \ No newline at end of file diff --git a/Task_5/src/CMakeLists.txt b/Task_5/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_5/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_5/src/nomeer_gazebo_pkg/CMakeLists.txt b/Task_5/src/nomeer_gazebo_pkg/CMakeLists.txt new file mode 100644 index 0000000..1c6450f --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/CMakeLists.txt @@ -0,0 +1,206 @@ +cmake_minimum_required(VERSION 3.0.2) +project(nomeer_gazebo_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES nomeer_gazebo_pkg +# CATKIN_DEPENDS roscpp rospy std_msgs +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/nomeer_gazebo_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +# add_executable(${PROJECT_NAME}_node src/nomeer_gazebo_pkg_node.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(${PROJECT_NAME}_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_nomeer_gazebo_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_5/src/nomeer_gazebo_pkg/default_gzclient_camera(1)-2023-02-11T20_32_22.012985.jpg b/Task_5/src/nomeer_gazebo_pkg/default_gzclient_camera(1)-2023-02-11T20_32_22.012985.jpg new file mode 100644 index 0000000..61beb48 Binary files /dev/null and b/Task_5/src/nomeer_gazebo_pkg/default_gzclient_camera(1)-2023-02-11T20_32_22.012985.jpg differ diff --git a/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.config b/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.config new file mode 100644 index 0000000..d615120 --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.config @@ -0,0 +1,11 @@ + + + building_model + 1.0 + model.sdf + + + + + + diff --git a/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.sdf b/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.sdf new file mode 100644 index 0000000..37ee2bf --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/model/building_model/model.sdf @@ -0,0 +1,1138 @@ + + + + -2.415 -2.70167 0 0 -0 0 + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.75 2.65167 0 0 -0 3.14159 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 7.575 1.72667 0 0 -0 -1.5708 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.775 0.801673 0 0 -0 3.14159 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.975 0.001673 0 0 -0 -1.5708 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 7.025 -0.798327 0 0 -0 0 + + + + + + 0.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 0.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.075 -1.09833 0 0 -0 -1.5708 + + + + + + 3.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 3.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.275 -1.39833 0 0 -0 3.14159 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 4.475 -0.348327 0 0 -0 1.5708 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 4.475 1.37667 0 0 -0 1.5708 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.15 2.05167 0 0 -0 0 + + + + + + 1 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.825 2.47667 0 0 -0 1.5708 + + + + + + 4.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 4.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 3.775 2.90167 0 0 -0 3.14159 + + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1.725 1.72667 0 0 -0 -1.5708 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.8 0.551673 0 0 -0 3.14159 + + + + + + 2.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -1.425 0.551673 0 0 -0 3.14159 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -3.775 0.551673 0 0 -0 3.14159 + + + + + + 3.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 3.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -4.825 2.22667 0 0 -0 1.5708 + + + + + + 5.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 5.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.375 3.90167 0 0 -0 3.14159 + + + + + + 4.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 4.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.925 1.60167 0 0 -0 -1.5708 + + + + + + 3.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 3.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.925 -2.24833 0 0 -0 -1.5708 + + + + + + 5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.5 -3.79833 0 0 -0 0 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.075 -2.87333 0 0 -0 1.5708 + + + + + + 2.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -6.375 -1.94833 0 0 -0 3.14159 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.675 -1.02333 0 0 -0 1.5708 + + + + + + 1 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.25 -0.098327 0 0 -0 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -6.4875 -0.682894 0 0 -0 -1.0472 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.35 -1.26746 0 0 -0 0 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.829393 -3.35167 0 0 -0 1.5708 + + + + + + 9 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 9 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 2.15 -3.89833 0 0 -0 3.14159 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -2.24458 -0.010492 0 0 -0 -1.309 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.24489 1.98081 0 0 -0 0 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -8.18098 1.5919 0 0 -0 -0.785398 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -8.69261 -3.07855 0 0 -0 1.5708 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.76845 2.44633 0 0 -0 3.14159 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 3.49611 -0.723673 0 0 -0 -2.61799 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.575 -3.22333 0 0 -0 1.5708 + + + + + + 3.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 3.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.25 -2.54833 0 0 -0 0 + + + + + + 3 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 3 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 9.925 -1.12333 0 0 -0 1.5708 + + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 9.925 1.47667 0 0 -0 1.5708 + + 1 + + diff --git a/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.config b/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.config new file mode 100644 index 0000000..9908add --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.config @@ -0,0 +1,11 @@ + + + nomeer_model + 1.0 + model.sdf + + + + + + diff --git a/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.sdf b/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.sdf new file mode 100644 index 0000000..ad1377c --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/model/nomeer_model/model.sdf @@ -0,0 +1,745 @@ + + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.473319 0.050453 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.923319 0.050453 -0.058 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 0 -0 0 + + + 0.1 0.1 0.1 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 1 1 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + link_2 + link_4_clone_0 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone_1 + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_5 + 0 0 0 0 -0 0 + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + 0 + 1 + + diff --git a/Task_5/src/nomeer_gazebo_pkg/package.xml b/Task_5/src/nomeer_gazebo_pkg/package.xml new file mode 100644 index 0000000..3118bae --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/package.xml @@ -0,0 +1,68 @@ + + + nomeer_gazebo_pkg + 0.0.0 + The nomeer_gazebo_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + diff --git a/Task_5/src/nomeer_gazebo_pkg/world/nomeerWorld b/Task_5/src/nomeer_gazebo_pkg/world/nomeerWorld new file mode 100644 index 0000000..33d7019 --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/world/nomeerWorld @@ -0,0 +1,2897 @@ + + + + 1 + 0 0 10 0 -0 0 + 0.8 0.8 0.8 1 + 0.2 0.2 0.2 1 + + 1000 + 0.9 + 0.01 + 0.001 + + -0.5 0.1 -0.9 + + 0 + 0 + 0 + + + + 1 + + + + + 0 0 1 + 100 100 + + + + + 65535 + + + + + 100 + 50 + + + + + + + + 10 + + + 0 + + + 0 0 1 + 100 100 + + + + + + + 0 + 0 + 0 + + + 0 0 -9.8 + 6e-06 2.3e-05 -4.2e-05 + + + 0.001 + 1 + 1000 + + + 0.4 0.4 0.4 1 + 0.7 0.7 0.7 1 + 1 + + + + EARTH_WGS84 + 0 + 0 + 0 + 0 + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.473319 0.050453 -0.208 0 -0 0 + 1 + 0 + 1 + 0 + + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.923319 0.050453 -0.058 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 0 -0 0 + + + 0.1 0.1 0.1 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 1 1 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + link_2 + link_4_clone_0 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone_1 + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_5 + 0 0 0 0 -0 0 + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + 0 + 1 + 0.473319 -0.050453 0.408 0 -0 0 + + + 41 530000000 + 29 369399219 + 1676087165 743978611 + 29317 + + -2.415 -2.70167 0 0 -0 0 + 1 1 1 + + 6.335 -0.05 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 5.16 -0.975 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 4.36 -1.9 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 3.56 -2.7 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 4.61 -3.5 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 5.66 -3.8 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 3.86 -4.1 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 2.06 -3.05 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 2.06 -1.325 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 2.735 -0.65 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 3.41 -0.225 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 1.36 0.2 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.69 -0.975 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -1.615 -2.15 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -3.84 -2.15 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -6.19 -2.15 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -7.24 -0.475 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -9.79 1.2 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -12.34 -1.1 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -12.34 -4.95 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -9.915 -6.5 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -7.49 -5.575 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -8.79 -4.65 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -10.09 -3.725 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -9.665 -2.8 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -8.9025 -3.38456 0 0 0 -1.0472 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -7.765 -3.96913 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -1.58561 -6.05334 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.265 -6.6 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -4.65958 -2.71216 0 0 0 -1.309 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -11.6599 -0.72086 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -10.596 -1.10977 0 0 0 -0.785398 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -11.1076 -5.78022 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -8.18345 -0.25534 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 1.08111 -3.42534 0 0 0 -2.61799 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 4.16 -5.925 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 5.835 -5.25 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 7.51 -3.825 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 7.51 -1.225 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 0 0 0 0 -0 0 + 1 1 1 + + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -2.21922 -4.47609 0.408 0 -0 0 + 1 1 1 + + -2.69254 -4.42563 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 -9.8 0 -0 0 + 0 0 -9.8 0 -0 0 + + + -2.99254 -4.10063 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -2.39254 -4.75063 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -2.39254 -4.10063 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -2.99254 -4.75063 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -3.13906 -4.42107 0.505275 -0.009035 0.003387 -0.000706 + 1.1316 2.44612 2.61034 -1.75015 0.877609 3.13357 + 1346.09 2712.41 34317.3 0.449193 0.850988 1.53841 + 1346.09 2712.41 34317.3 0 -0 0 + + + + 0 0 10 0 -0 0 + + + + + -2.32791 -1.24033 31.344 3.14159 1.57079 3.14159 + orbit + perspective + + + + -2.415 -2.70167 0 0 -0 0 + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.75 2.65167 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 7.575 1.72667 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.775 0.801673 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.975 0.001673 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 7.025 -0.798327 0 0 -0 0 + 0 + 0 + 0 + + + + + + 0.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 0.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.075 -1.09833 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 3.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 3.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.275 -1.39833 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 4.475 -0.348327 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 4.475 1.37667 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.15 2.05167 0 0 -0 0 + 0 + 0 + 0 + + + + + + 1 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.825 2.47667 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 4.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 4.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 3.775 2.90167 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1.725 1.72667 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.8 0.551673 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -1.425 0.551673 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -3.775 0.551673 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 3.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 3.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -4.825 2.22667 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 5.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 5.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.375 3.90167 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 4.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 4.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.925 1.60167 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 3.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 3.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.925 -2.24833 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.5 -3.79833 0 0 -0 0 + 0 + 0 + 0 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.075 -2.87333 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 2.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -6.375 -1.94833 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.675 -1.02333 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 1 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -7.25 -0.098327 0 0 -0 0 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -6.4875 -0.682894 0 0 -0 -1.0472 + 0 + 0 + 0 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.35 -1.26746 0 0 -0 0 + 0 + 0 + 0 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.829393 -3.35167 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 9 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 9 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 2.15 -3.89833 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -2.24458 -0.010492 0 0 -0 -1.309 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -9.24489 1.98081 0 0 -0 0 + 0 + 0 + 0 + + + + + + 1.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -8.18098 1.5919 0 0 -0 -0.785398 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -8.69261 -3.07855 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 1.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -5.76845 2.44633 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 2.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 3.49611 -0.723673 0 0 -0 -2.61799 + 0 + 0 + 0 + + + + + + 1.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 1.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 6.575 -3.22333 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 3.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 3.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 8.25 -2.54833 0 0 -0 0 + 0 + 0 + 0 + + + + + + 3 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 3 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 9.925 -1.12333 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 2.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 2.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 9.925 1.47667 0 0 -0 1.5708 + 0 + 0 + 0 + + 1 + + + diff --git a/Task_5/src/nomeer_gazebo_pkg/world/nomeer_world b/Task_5/src/nomeer_gazebo_pkg/world/nomeer_world new file mode 100644 index 0000000..97f9e94 --- /dev/null +++ b/Task_5/src/nomeer_gazebo_pkg/world/nomeer_world @@ -0,0 +1,900 @@ + + + + 1 + 0 0 10 0 -0 0 + 0.8 0.8 0.8 1 + 0.2 0.2 0.2 1 + + 1000 + 0.9 + 0.01 + 0.001 + + -0.5 0.1 -0.9 + + 0 + 0 + 0 + + + + 1 + + + + + 0 0 1 + 100 100 + + + + + 65535 + + + + + 100 + 50 + + + + + + + + 10 + + + 0 + + + 0 0 1 + 100 100 + + + + + + + 0 + 0 + 0 + + + 0 0 -9.8 + 6e-06 2.3e-05 -4.2e-05 + + + 0.001 + 1 + 1000 + + + 0.4 0.4 0.4 1 + 0.7 0.7 0.7 1 + 1 + + + + EARTH_WGS84 + 0 + 0 + 0 + 0 + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.473319 0.050453 -0.208 0 -0 0 + 1 + 0 + 1 + 0 + + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 0.6 0.2 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.173319 0.375454 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.145833 + 0 + 0 + 0.145833 + 0 + 0.125 + + 0 0 0 0 -0 0 + + -0.773319 -0.274548 -0.208 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 1.5708 -0 0 + + + 0.2 + 0.05 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 0.2 + 0.05 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + + 1 + + 0.166667 + 0 + 0 + 0.166667 + 0 + 0.166667 + + 0 0 0 0 -0 0 + + -0.923319 0.050453 -0.058 0 -0 0 + 1 + 0 + 0 + 0 + + 0 0 0 0 -0 0 + + + 0.1 0.1 0.1 + + + + 1 + + + __default__ + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 0.01 0.01 0.01 1 + 0 0 0 1 + + 0 + 1 + + + 0 + 10 + 0 0 0 0 -0 0 + + + 1 1 1 + + + + + + 1 + 1 + 0 0 0 + 0 + 0 + + + 1 + 0 + 0 + 1 + + 0 + + + + + 0 + 1e+06 + + + 0 + 1 + 1 + + 0 + 0.2 + 1e+13 + 1 + 0.01 + 0 + + + 1 + -0.01 + 0 + 0.2 + 1e+13 + 1 + + + + + + + link_2 + link_4_clone_0 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4 + 0 0 0 0 -0 0 + + 0 1 0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_4_clone_1 + 0 0 0 0 -0 0 + + -0 -1 -0 + + -1.79769e+308 + 1.79769e+308 + -1 + -1 + + + 0 + 0 + 0 + + + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + + link_2 + link_5 + 0 0 0 0 -0 0 + + + + 0 + 0.2 + + + 0 + 0.2 + + + + + 0 + 1 + 0.473319 -0.050453 0.408 0 -0 0 + + + 12 213000000 + 12 258678406 + 1676084949 796616587 + 12213 + + 0 0 0 0 -0 0 + 1 1 1 + + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 0.473319 -0.050453 0.408 0 -0 0 + 1 1 1 + + 0 0 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.3 0.325001 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 0.3 -0.325001 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 0.3 0.325001 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.3 -0.325001 0.2 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.45 0 0.35 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 0 0 10 0 -0 0 + + + + + 4.78194 -5.77722 3.96637 -0 0.412709 2.26897 + orbit + perspective + + + + diff --git a/Task_6/src/CMakeLists.txt b/Task_6/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_6/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/CMakeLists.txt b/Task_6/src/nomeer_xacro_pkg/CMakeLists.txt new file mode 100644 index 0000000..2686cf7 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/CMakeLists.txt @@ -0,0 +1,204 @@ +cmake_minimum_required(VERSION 3.0.2) +project(nomeer_xacro_pkg) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + xacro +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs # Or other packages containing msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES nomeer_xacro_pkg +# CATKIN_DEPENDS xacro +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/nomeer_xacro_pkg.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +# add_executable(${PROJECT_NAME}_node src/nomeer_xacro_pkg_node.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(${PROJECT_NAME}_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_nomeer_xacro_pkg.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_6/src/nomeer_xacro_pkg/package.xml b/Task_6/src/nomeer_xacro_pkg/package.xml new file mode 100644 index 0000000..c5dcca5 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/package.xml @@ -0,0 +1,62 @@ + + + nomeer_xacro_pkg + 0.0.0 + The nomeer_xacro_pkg package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + xacro + xacro + xacro + + + + + + + + diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/camera.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/camera.xacro new file mode 100644 index 0000000..bc57128 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/camera.xacro @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/lidar.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/lidar.xacro new file mode 100644 index 0000000..c5c6ce0 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/lidar.xacro @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/material.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/material.xacro new file mode 100644 index 0000000..08b1415 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/material.xacro @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/wheel.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/wheel.xacro new file mode 100644 index 0000000..a856d92 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot Accessories/wheel.xacro @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/base.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/base.xacro new file mode 100644 index 0000000..b97fd69 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/base.xacro @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer.urdf b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer.urdf new file mode 100644 index 0000000..7c770fe --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer.urdf @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer1_robot.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer1_robot.xacro new file mode 100644 index 0000000..01ea966 --- /dev/null +++ b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/nomeer1_robot.xacro @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/urdf_task1.jpeg b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/urdf_task1.jpeg new file mode 100644 index 0000000..b77f58d Binary files /dev/null and b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_1/urdf_task1.jpeg differ diff --git a/Task_6/src/nomeer_xacro_pkg/urdf/Robot_2/base.xacro b/Task_6/src/nomeer_xacro_pkg/urdf/Robot_2/base.xacro new file mode 100644 index 0000000..e69de29 diff --git a/Task_7/src/CMakeLists.txt b/Task_7/src/CMakeLists.txt new file mode 120000 index 0000000..2016816 --- /dev/null +++ b/Task_7/src/CMakeLists.txt @@ -0,0 +1 @@ +/opt/ros/noetic/share/catkin/cmake/toplevel.cmake \ No newline at end of file diff --git a/Task_7/src/robot_description/CMakeLists.txt b/Task_7/src/robot_description/CMakeLists.txt new file mode 100644 index 0000000..928dbce --- /dev/null +++ b/Task_7/src/robot_description/CMakeLists.txt @@ -0,0 +1,204 @@ +cmake_minimum_required(VERSION 3.0.2) +project(robot_description) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + xacro +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs # Or other packages containing msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES robot_description +# CATKIN_DEPENDS xacro +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/robot_description.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +# add_executable(${PROJECT_NAME}_node src/robot_description_node.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(${PROJECT_NAME}_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_robot_description.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_7/src/robot_description/package.xml b/Task_7/src/robot_description/package.xml new file mode 100644 index 0000000..616172d --- /dev/null +++ b/Task_7/src/robot_description/package.xml @@ -0,0 +1,62 @@ + + + robot_description + 0.0.0 + The robot_description package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + xacro + xacro + xacro + + + + + + + + diff --git a/Task_7/src/robot_description/urdf/.vscode/settings.json b/Task_7/src/robot_description/urdf/.vscode/settings.json new file mode 100644 index 0000000..1fb641e --- /dev/null +++ b/Task_7/src/robot_description/urdf/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python.autoComplete.extraPaths": [ + "/opt/ros/noetic/lib/python3/dist-packages" + ] +} \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/base.xacro b/Task_7/src/robot_description/urdf/base.xacro new file mode 100644 index 0000000..1ebd2c1 --- /dev/null +++ b/Task_7/src/robot_description/urdf/base.xacro @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/body.xacro b/Task_7/src/robot_description/urdf/body.xacro new file mode 100644 index 0000000..6e899fe --- /dev/null +++ b/Task_7/src/robot_description/urdf/body.xacro @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/camera.xacro b/Task_7/src/robot_description/urdf/camera.xacro new file mode 100644 index 0000000..d2b740a --- /dev/null +++ b/Task_7/src/robot_description/urdf/camera.xacro @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/caster.xacro b/Task_7/src/robot_description/urdf/caster.xacro new file mode 100644 index 0000000..c6f1ecd --- /dev/null +++ b/Task_7/src/robot_description/urdf/caster.xacro @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1.0 + 1.0 + + + + + + + + + + + + + + + + diff --git a/Task_7/src/robot_description/urdf/gazebo.xacro b/Task_7/src/robot_description/urdf/gazebo.xacro new file mode 100644 index 0000000..35f4944 --- /dev/null +++ b/Task_7/src/robot_description/urdf/gazebo.xacro @@ -0,0 +1,145 @@ + + + + + + + + + + 20 + + + wheel1_base_joint + + + wheel2_base_joint + + + 2.2 + + + 0.5 + + + 1.0 + + + 20 + + + cmd_vel + + + odom + + + odom + + + base_footprint + + + 1 + + + true + + + true + + + true + + + false + + + + + + + + + 30.0 + + + + 1.3962634 + + 800 + 800 + R8G8B8 + + + 0.02 + 300 + + + gaussian + + 0.0 + 0.007 + + + + + + true + 0.0 + autonomous_robot_1/camera1 + image_raw + camera_info + camera_link + 0.07 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + + + + 0 0 0 0 0 0 + false + 40 + + + + 720 + 1 + -1.570796 + 1.570796 + + + + 0.10 + 30.0 + 0.01 + + + gaussian + + 0.0 + 0.01 + + + + /autonomous_robot_1/laser/scan + lidar_link + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/inertial_macros.xacro b/Task_7/src/robot_description/urdf/inertial_macros.xacro new file mode 100644 index 0000000..6d3b5a4 --- /dev/null +++ b/Task_7/src/robot_description/urdf/inertial_macros.xacro @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Task_7/src/robot_description/urdf/lidar.xacro b/Task_7/src/robot_description/urdf/lidar.xacro new file mode 100644 index 0000000..71a5937 --- /dev/null +++ b/Task_7/src/robot_description/urdf/lidar.xacro @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/material.xacro b/Task_7/src/robot_description/urdf/material.xacro new file mode 100644 index 0000000..08b1415 --- /dev/null +++ b/Task_7/src/robot_description/urdf/material.xacro @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Task_7/src/robot_description/urdf/robot.jpeg b/Task_7/src/robot_description/urdf/robot.jpeg new file mode 100644 index 0000000..921158c Binary files /dev/null and b/Task_7/src/robot_description/urdf/robot.jpeg differ diff --git a/Task_7/src/robot_description/urdf/robot.urdf b/Task_7/src/robot_description/urdf/robot.urdf new file mode 100644 index 0000000..1420c55 --- /dev/null +++ b/Task_7/src/robot_description/urdf/robot.urdf @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1.0 + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Task_7/src/robot_description/urdf/robot.xacro b/Task_7/src/robot_description/urdf/robot.xacro new file mode 100644 index 0000000..f51cc38 --- /dev/null +++ b/Task_7/src/robot_description/urdf/robot.xacro @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_description/urdf/wheel.xacro b/Task_7/src/robot_description/urdf/wheel.xacro new file mode 100644 index 0000000..05ddc9d --- /dev/null +++ b/Task_7/src/robot_description/urdf/wheel.xacro @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_gazebo/CMakeLists.txt b/Task_7/src/robot_gazebo/CMakeLists.txt new file mode 100644 index 0000000..f7c89a3 --- /dev/null +++ b/Task_7/src/robot_gazebo/CMakeLists.txt @@ -0,0 +1,202 @@ +cmake_minimum_required(VERSION 3.0.2) +project(robot_gazebo) + +## Compile as C++11, supported in ROS Kinetic and newer +# add_compile_options(-std=c++11) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a exec_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder +# add_message_files( +# FILES +# Message1.msg +# Message2.msg +# ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here +# generate_messages( +# DEPENDENCIES +# std_msgs # Or other packages containing msgs +# ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if your package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( +# INCLUDE_DIRS include +# LIBRARIES gazebo_robot +# CATKIN_DEPENDS other_catkin_pkg +# DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +include_directories( +# include +# ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(${PROJECT_NAME} +# src/${PROJECT_NAME}/gazebo_robot.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +## With catkin_make all packages are built within a single CMake context +## The recommended prefix ensures that target names across packages don't collide +# add_executable(${PROJECT_NAME}_node src/gazebo_robot_node.cpp) + +## Rename C++ executable without prefix +## The above recommended prefix causes long target names, the following renames the +## target back to the shorter version for ease of user use +## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" +# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(${PROJECT_NAME}_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# catkin_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +# install(TARGETS ${PROJECT_NAME}_node +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark libraries for installation +## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +# install(TARGETS ${PROJECT_NAME} +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_gazebo_robot.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/Task_7/src/robot_gazebo/launch/robot.launch b/Task_7/src/robot_gazebo/launch/robot.launch new file mode 100644 index 0000000..df2e7ee --- /dev/null +++ b/Task_7/src/robot_gazebo/launch/robot.launch @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Task_7/src/robot_gazebo/models/wall/model.config b/Task_7/src/robot_gazebo/models/wall/model.config new file mode 100644 index 0000000..c684922 --- /dev/null +++ b/Task_7/src/robot_gazebo/models/wall/model.config @@ -0,0 +1,11 @@ + + + wall + 1.0 + model.sdf + + + + + + diff --git a/Task_7/src/robot_gazebo/models/wall/model.sdf b/Task_7/src/robot_gazebo/models/wall/model.sdf new file mode 100644 index 0000000..e03015c --- /dev/null +++ b/Task_7/src/robot_gazebo/models/wall/model.sdf @@ -0,0 +1,268 @@ + + + + -0.16666 -1.28658 0 0 -0 0 + + + + + 67 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 67 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.250001 16.55 0 0 -0 0 + + + + + + 33.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 33.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 33.675 -0 0 0 -0 -1.5708 + + + + + + 17 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 17 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 10.2825 5.37792 0 0 -0 0 + + + + + + 12.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 12.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 13.668 -10.2778 0 0 -0 1.5708 + + + + + + 67.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 67.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1e-06 -16.55 0 0 -0 3.14159 + + + + + + 24.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 24.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -33.675 -4.5 0 0 -0 1.5708 + + + + + + 18 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 18 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -24.75 7.55 0 0 -0 0 + + + + + + 15.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 15.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -15.3795 -8.69805 0 0 -0 1.5708 + + + + + + 17.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 17.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1.53826 7.5106 0 0 -0 -1.5708 + + 1 + + diff --git a/Task_7/src/robot_gazebo/package.xml b/Task_7/src/robot_gazebo/package.xml new file mode 100644 index 0000000..f0e64c9 --- /dev/null +++ b/Task_7/src/robot_gazebo/package.xml @@ -0,0 +1,59 @@ + + + robot_gazebo + 0.0.0 + The gazebo_robot package + + + + + nomeer + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + + + + + + + + diff --git a/Task_7/src/robot_gazebo/worlds/world/model.config b/Task_7/src/robot_gazebo/worlds/world/model.config new file mode 100644 index 0000000..b8b07d9 --- /dev/null +++ b/Task_7/src/robot_gazebo/worlds/world/model.config @@ -0,0 +1,11 @@ + + + world + 1.0 + model.sdf + + + + + + diff --git a/Task_7/src/robot_gazebo/worlds/world/model.sdf b/Task_7/src/robot_gazebo/worlds/world/model.sdf new file mode 100644 index 0000000..767088f --- /dev/null +++ b/Task_7/src/robot_gazebo/worlds/world/model.sdf @@ -0,0 +1,239 @@ + + + + -9.70447 -0.465234 0 0 -0 0 + + + + + 47.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 47.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0 15.175 0 0 -0 0 + + + + + + 30.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 30.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 23.8 -0 0 0 -0 -1.5708 + + + + + + 47.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 47.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0 -15.175 0 0 -0 3.14159 + + + + + + 19.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 19.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -23.8 -5.375 0 0 -0 1.5708 + + + + + + 19 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 19 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 14.3058 -1.51788 0 0 -0 3.14159 + + + + + + 10 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 10 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 5.13235 -10.1394 0 0 -0 1.5708 + + + + + + 15.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 15.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -16.25 4.425 0 0 -0 0 + + + + + + 8.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + + + 0 0 1.25 0 -0 0 + + + 8.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -1.76399 10.4974 0 0 -0 -1.5708 + + 1 + + diff --git a/Task_7/src/robot_gazebo/worlds/world/robot_world b/Task_7/src/robot_gazebo/worlds/world/robot_world new file mode 100644 index 0000000..c71c8cf --- /dev/null +++ b/Task_7/src/robot_gazebo/worlds/world/robot_world @@ -0,0 +1,1976 @@ + + + + 1 + 0 0 10 0 -0 0 + 0.8 0.8 0.8 1 + 0.2 0.2 0.2 1 + + 1000 + 0.9 + 0.01 + 0.001 + + -0.5 0.1 -0.9 + + 0 + 0 + 0 + + + + 1 + + + + + 0 0 1 + 100 100 + + + + + 65535 + + + + + 100 + 50 + + + + + + + + 10 + + + 0 + + + 0 0 1 + 100 100 + + + + + + + 0 + 0 + 0 + + + 0 0 -9.8 + 6e-06 2.3e-05 -4.2e-05 + + + 0.001 + 1 + 1000 + + + 0.4 0.4 0.4 1 + 0.7 0.7 0.7 1 + 1 + + + + EARTH_WGS84 + 0 + 0 + 0 + 0 + + + -0.16666 -1.28658 0 0 -0 0 + + + + + 67 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 67 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 0.250001 16.55 0 0 -0 0 + 0 + 0 + 0 + + + + + + 33.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 33.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 33.675 -0 0 0 -0 -1.5708 + 0 + 0 + 0 + + + + + + 17 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 17 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 10.2825 5.37792 0 0 -0 0 + 0 + 0 + 0 + + + + + + 12.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 12.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 13.668 -10.2778 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 67.5 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 67.5 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1e-06 -16.55 0 0 -0 3.14159 + 0 + 0 + 0 + + + + + + 24.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 24.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -33.675 -4.5 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 18 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 18 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -24.75 7.55 0 0 -0 0 + 0 + 0 + 0 + + + + + + 15.25 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 15.25 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + -15.3795 -8.69805 0 0 -0 1.5708 + 0 + 0 + 0 + + + + + + 17.75 0.15 2.5 + + + 0 0 1.25 0 -0 0 + 10 + + + + + + + + + + + + + + + 0 0 1.25 0 -0 0 + + + 17.75 0.15 2.5 + + + + + 1 1 1 1 + + + 0 + + + 1.53826 7.5106 0 0 -0 -1.5708 + 0 + 0 + 0 + + 1 + + + 48 461000000 + 51 370077585 + 1676932396 715451909 + 48461 + + -6.26637 3.38451 0.011376 2e-06 -0 0 + 1 1 1 + + -6.26637 3.38451 0.011376 2e-06 -0 0 + 0 0 0 0 -0 0 + 0 0 -9.8 0 -0 0 + 0 0 -9.8 0 -0 0 + + + + 2.58583 2.05128 0 0 -0 0 + 1 1 1 + + 2.58583 2.05128 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 10.0222 9.77976 0 0 -0 0 + 1 1 1 + + 10.0222 9.77976 0.01 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 8.39901 -7.23188 0 0 -0 0 + 1 1 1 + + 8.39901 -7.23188 1.5 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 4.07914 -14.3933 0 0 -0 0 + 1 1 1 + + 4.07914 -14.3933 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 1.8941 -14.2886 0 0 -0 0 + 1 1 1 + + 1.8941 -14.2886 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -0.087354 -14.138 0 0 -0 0 + 1 1 1 + + -0.087354 -14.138 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -4.90067 -10.6641 0.01 -0 1e-06 -1.7e-05 + 1 1 1 + + -4.90067 -10.6641 0.51 -0 1e-06 -1.7e-05 + 0 0 0 0 -0 0 + 1.07556 0.034255 -0.19878 3.07098 0.991637 3.13739 + 1.07556 0.034255 -0.19878 0 -0 0 + + + + -22.2918 1.61794 0.01 -0 -0 -2e-05 + 1 1 1 + + -22.2918 1.61794 0.51 -0 -0 -2e-05 + 0 0 0 0 -0 0 + -1.07557 -0.034262 0.198792 -3.07096 -0.991623 -3.1374 + -1.07557 -0.034262 0.198792 0 -0 0 + + + + 29.1283 5.9137 0.01 -0 -0 -1.7e-05 + 1 1 1 + + 29.1283 5.9137 0.51 -0 -0 -1.7e-05 + 0 0 0 0 -0 0 + -1.07556 -0.034256 0.19878 -3.07098 -0.991637 -3.13739 + -1.07556 -0.034256 0.19878 0 -0 0 + + + + 20.8597 8.79033 0.01 0 1e-06 -1.6e-05 + 1 1 1 + + 20.8597 8.79033 0.51 0 1e-06 -1.6e-05 + 0 0 0 0 -0 0 + 1.07556 0.034256 -0.19878 3.07097 0.991637 3.13739 + 1.07556 0.034256 -0.19878 0 -0 0 + + + + 23.9919 -6.3606 0 0 -0 0 + 1 1 1 + + 23.9919 -6.3606 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 0 0 0 0 -0 0 + 1 1 1 + + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -8.47098 -11.1519 0.012972 1.57143 0.786097 0.786849 + 1 1 1 + + -8.44904 -11.1738 0.012959 1.57143 0.786097 0.786849 + 0 0 0 0 -0 0 + 0 -0 0 0 -0 0 + 0 -0 0 0 -0 0 + + + + 29.9324 -14.7822 0 0 -0 0 + 1 1 1 + + 29.9324 -14.7822 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -24.7769 -10.7631 0 0 -0 0 + 1 1 1 + + -24.7769 -10.7631 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 10.3262 -14.195 1 0 -0 0 + 1 1 1 + + 10.3262 -14.195 1 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + -0.16666 -1.28658 0 0 -0 0 + 1 1 1 + + 0.083341 15.2634 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 33.5083 -1.28658 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 10.1158 4.09134 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 13.5013 -11.5644 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -0.166659 -17.8366 0 0 -0 3.14159 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -33.8417 -5.78658 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -24.9167 6.26342 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + -15.5462 -9.98463 0 0 -0 1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + 1.3716 6.22402 0 0 0 -1.5708 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + 0 0 0 0 -0 0 + + + + 6.68735 -6.70891 0.011937 3.13966 0.00065 -2.63361 + 1 1 1 + + 6.68735 -6.7089 0.010937 3.13966 0.00065 -2.63361 + 0 0 0 0 -0 0 + -0.002644 -0.000349 -0.00345 -2.80343 -0.48799 3.13547 + -3.2e-05 -4e-06 -4.2e-05 0 -0 0 + + + + 0 0 10 0 -0 0 + + + + + 0 0 0.5 0 -0 0 + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + 10 + + + + + + + + + + + + + + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + + 0 + + 0 0 0 0 -0 0 + + 1 + 0 + 0 + 1 + 0 + 1 + + 1 + + 0 + 0 + + -4.90068 -10.6641 0 0 -0 0 + + + + + + + 1.5 1.5 1.5 + model://dumpster/meshes/dumpster.dae + + + 10 + + + + + + + + + + + + + + + + + 1.5 1.5 1.5 + model://dumpster/meshes/dumpster.dae + + + + + + + 0 + + 0 0 0 0 -0 0 + + 1 + 0 + 0 + 1 + 0 + 1 + + 1 + + 0 + 0 + + -6.26637 3.38451 0 0 -0 0 + + + 1 + + + + + 3 3 2.5 + model://gazebo/meshes/gazebo.dae + + + 10 + + + + + + + + + + + + + + + + + 3 3 2.5 + model://gazebo/meshes/gazebo.dae + + + + 0 + 0 + 0 + + 23.9919 -6.3606 0 0 -0 0 + + + + 0 0 0.031 0 -0 0 + + 0.0121 + + 3.90898e-06 + 0 + 0 + 3.90898e-06 + 0 + 6.58845e-08 + + 0 0 0 0 -0 0 + + + + + 0.0033 + 0.062 + + + + + 0.305 + 2e+11 + + 100000 + 100 + 100 + 0.001 + + + + + 1 + 0 + 0.01 + + + + + + + 10 + + + + + 0.0033 + 0.062 + + + + + + + 0 + 0 + 0 + + -8.48915 -11.1338 0 0 -0 0 + + + + 0 0 0.001 0 -0 0 + + 0.0122 + + 1.08758e-06 + 0 + 0 + 1.08758e-06 + 0 + 2.16703e-06 + + 0 0 0 0 -0 0 + + + + + model://washer/meshes/washer.dae + + + + + 0.305 + 2e+11 + + 100000 + 100 + 100 + 0.001 + + + + + 1 + 0 + 0.01 + + + + + + + 10 + + + + + model://washer/meshes/washer.dae + + + + + + + 0 + 0 + 0 + + 6.78042 -6.71942 0 0 -0 0 + + + 1 + 10.3262 -14.195 1 0 -0 0 + + + + + model://stop_light/meshes/stop_light.obj + 0.01 0.01 0.01 + + + 10 + + + + + + + + + + + + + + + + + model://stop_light/meshes/stop_light.obj + 0.01 0.01 0.01 + + + + + -0.001123 -0.082251 -0.147514 0 -0 0 + + + 0.1012 + + + + + 1 0 0 1 + 1 0 0 1 + + + + -0.001123 -0.082251 -0.402 0 -0 0 + + + 0.1012 + + + + + 1 1 0 1 + 1 1 0 1 + + + + -0.001123 -0.082251 -0.655 0 -0 0 + + + 0.1012 + + + + + 0 1 0 1 + 0 1 0 1 + + + 0 + 0 + 0 + + + + 1 + + + + + model://post_office/meshes/post_office.dae + + + 10 + + + + + + + + + + + + + + + + + model://post_office/meshes/post_office.dae + + + + 0 + 0 + 0 + + -24.7769 -10.7631 0 0 -0 0 + + + 1 + + 0 0 0.01 0 -0 0 + + + + 0 0 1 + 10.4 7.4 + + + + + + 100 + 50 + + + + + + + + + + + 10 + + + 0 + + + 0 0 1 + 10.4 7.4 + + + + + + + + 0 3 0.011 0 -0 0 + 0 + + + 0 0 1 + 9.05 0.05 + + + + + + + + 0 -3 0.011 0 -0 0 + 0 + + + 0 0 1 + 9.05 0.05 + + + + + + + + -4.5 0 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.05 6.05 + + + + + + + + 4.5 0 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.05 6.05 + + + + + + + + 0 0 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.05 6.05 + + + + + + + + -3.9 0 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.05 2.25 + + + + + + + + -4.2 1.1 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.65 0.05 + + + + + + + + -4.2 -1.1 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.65 0.05 + + + + + + + + 3.9 0 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.05 2.25 + + + + + + + + 4.2 1.1 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.65 0.05 + + + + + + + + 4.2 -1.1 0.011 0 -0 0 + 0 + + + 0 0 1 + 0.65 0.05 + + + + + + + + -3.2 0 0.01 0 -0 0 + 0 + + + 0.05 + 0.0005 + + + + + + + + 3.2 0 0.01 0 -0 0 + 0 + + + 0.05 + 0.0005 + + + + + + + + 0 0 0.01 0 -0 0 + 0 + + + 0.05 + 0.0005 + + + + + + + + 0 0 0.005 0 -0 0 + 0 + + + 1 1 0.75 + model://robocup14_spl_field/meshes/circle.dae + + + + + + + 0 + 0 + 0 + + 10.0222 9.77976 0 0 -0 0 + + + 1 + + + + + model://oak_tree/meshes/oak_tree.dae + + + 10 + + + + + + + + + + + + + + + + + model://oak_tree/meshes/oak_tree.dae + + Branch + + + + + + + + + + + model://oak_tree/meshes/oak_tree.dae + + Bark + + + + + + + + 0 + 0 + 0 + + 29.9324 -14.7822 0 0 -0 0 + + + 1 + + + + + model://lamp_post/meshes/lamp_post.dae + 3 3 3 + + + 10 + + + + + + + + + + + + + + + + + model://lamp_post/meshes/lamp_post.dae + 3 3 3 + + + + 0 + 0 + 0 + + 2.58583 2.05128 0 0 -0 0 + + + + 0 0 0.5 0 -0 0 + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + 10 + + + + + + + + + + + + + + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + + 0 + + 0 0 0 0 -0 0 + + 1 + 0 + 0 + 1 + 0 + 1 + + 1 + + 0 + 0 + + -22.2918 1.61794 0 0 -0 0 + + + + 0 0 0.5 0 -0 0 + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + 10 + + + + + + + + + + + + + + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + + 0 + + 0 0 0 0 -0 0 + + 1 + 0 + 0 + 1 + 0 + 1 + + 1 + + 0 + 0 + + 29.1283 5.9137 0 0 -0 0 + + + + 0 0 0.5 0 -0 0 + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + 10 + + + + + + + + + + + + + + + + + model://cube_20k/meshes/cube_20k.stl + 0.5 0.5 0.5 + + + + 0 + + 0 0 0 0 -0 0 + + 1 + 0 + 0 + 1 + 0 + 1 + + 1 + + 0 + 0 + + 20.8597 8.79033 0 0 -0 0 + + + 1 + + + 0 0 0.755 0 -0 0 + + + 0.913 0.913 0.04 + + + 10 + + + + + + + + + + + + + + + 0 0 0.37 0 -0 0 + + + 0.042 0.042 0.74 + + + 10 + + + + + + + + + + + + + + + 0 0 0.02 0 -0 0 + + + 0.56 0.56 0.04 + + + 10 + + + + + + + + + + + + + + + + + model://cafe_table/meshes/cafe_table.dae + + + + 0 + 0 + 0 + + 4.07914 -14.3933 0 0 -0 0 + + + 1 + + + 0 0 0.755 0 -0 0 + + + 0.913 0.913 0.04 + + + 10 + + + + + + + + + + + + + + + 0 0 0.37 0 -0 0 + + + 0.042 0.042 0.74 + + + 10 + + + + + + + + + + + + + + + 0 0 0.02 0 -0 0 + + + 0.56 0.56 0.04 + + + 10 + + + + + + + + + + + + + + + + + model://cafe_table/meshes/cafe_table.dae + + + + 0 + 0 + 0 + + 1.8941 -14.2886 0 0 -0 0 + + + 1 + + + 0 0 0.755 0 -0 0 + + + 0.913 0.913 0.04 + + + 10 + + + + + + + + + + + + + + + 0 0 0.37 0 -0 0 + + + 0.042 0.042 0.74 + + + 10 + + + + + + + + + + + + + + + 0 0 0.02 0 -0 0 + + + 0.56 0.56 0.04 + + + 10 + + + + + + + + + + + + + + + + + model://cafe_table/meshes/cafe_table.dae + + + + 0 + 0 + 0 + + -0.087354 -14.138 0 0 -0 0 + + + 1 + + 0 0 1.5 0 -0 0 + + + + 3 1 3 + + + 10 + + + + + + + + + + + + + + + + + model://brick_box_3x1x3/meshes/simple_box.dae + 3 1 3 + + + + + + + 0 + 0 + 0 + + 8.39901 -7.23188 0 0 -0 0 + + + + 20.517 48.7141 63.3914 0 0.795643 -1.82699 + orbit + perspective + + + +