mirror of
https://github.com/EECS-467-W20-RRRobot-Project/RRRobot.git
synced 2025-08-27 10:02:45 +00:00
Rename Folder, Remove Submodules, & GEAR Container
- Update gitignore to ignore build, devel, and install folders in rrrobot_ws - Remove git submodules - Rename rrrobot_src to rrrobot_ws indicating that this is a catkin workspace - Create GEAR docker container - Move GEAR specific documentation to its own page - Add link to overleaf report on home page - Add tips & tricks section to home page
This commit is contained in:
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,9 +1,9 @@
|
|||||||
# Don't track the content of these folders #
|
# Don't track the content of these folders #
|
||||||
############################################
|
############################################
|
||||||
rrrobot_src/lib/
|
rrrobot_ws/lib/
|
||||||
rrrobot_src/*/build
|
rrrobot_ws/build
|
||||||
rrrobot_src/*/devel
|
rrrobot_ws/devel
|
||||||
rrrobot_src/*/install
|
rrrobot_ws/install
|
||||||
.*
|
.*
|
||||||
!.gitignore
|
!.gitignore
|
||||||
|
|
||||||
|
7
.gitmodules
vendored
7
.gitmodules
vendored
@@ -1,7 +0,0 @@
|
|||||||
[submodule "rrrobot_src/warehouse/src/ariac-gazebo_ros_pkgs"]
|
|
||||||
path = rrrobot_src/warehouse/src/ariac-gazebo_ros_pkgs
|
|
||||||
url = https://github.com/osrf/ariac-gazebo_ros_pkgs
|
|
||||||
branch = ariac-network-melodic
|
|
||||||
[submodule "rrrobot_src/warehouse/src/ariac"]
|
|
||||||
path = rrrobot_src/warehouse/src/ariac
|
|
||||||
url = https://bitbucket.org/osrf/ariac.git
|
|
@@ -60,7 +60,7 @@ services:
|
|||||||
# Mount gazebo folder on host to app folder in container
|
# Mount gazebo folder on host to app folder in container
|
||||||
volumes:
|
volumes:
|
||||||
#- .docker_env/gazebo/.gazebo:/root/.gazebo
|
#- .docker_env/gazebo/.gazebo:/root/.gazebo
|
||||||
- ../rrrobot_src:/app/rrrobot_src
|
- ../rrrobot_ws:/app/rrrobot_ws
|
||||||
# Set DISPLAY variable and network mode for GUIs
|
# Set DISPLAY variable and network mode for GUIs
|
||||||
environment:
|
environment:
|
||||||
- DISPLAY=${IP_ADDRESS}:0.0
|
- DISPLAY=${IP_ADDRESS}:0.0
|
||||||
@@ -71,18 +71,18 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- ros
|
- ros
|
||||||
|
|
||||||
# Warehouse Production Service
|
# GEAR Production Service
|
||||||
warehouse:
|
gear:
|
||||||
# Use Dockerfile in warehouse folder
|
# Use Dockerfile in gear folder
|
||||||
build: ./warehouse
|
build: ./gear
|
||||||
# Mount warehouse folder on host to app folder in container
|
# Mount gear folder on host to app folder in container
|
||||||
volumes:
|
volumes:
|
||||||
- ../rrrobot_src:/app/rrrobot_src
|
- ../rrrobot_ws:/app/rrrobot_ws
|
||||||
# Set DISPLAY variable and network mode for GUIs
|
# Set DISPLAY variable and network mode for GUIs
|
||||||
environment:
|
environment:
|
||||||
- DISPLAY=${IP_ADDRESS}:0.0
|
- DISPLAY=${IP_ADDRESS}:0.0
|
||||||
# Set working directory in container to app folder
|
# Set working directory in container to app folder
|
||||||
# working_dir: /home/rrrobot
|
working_dir: /app/rrrobot_ws
|
||||||
hostname: "rrrobot-env"
|
hostname: "rrrobot-env"
|
||||||
networks:
|
networks:
|
||||||
- ros
|
- ros
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Warehouse Dockerfile
|
# GEAR Dockerfile
|
||||||
|
|
||||||
# Use official image for Gazebo 9.x
|
# Use official image for Gazebo 9.x
|
||||||
FROM gazebo:gzserver9
|
FROM gazebo:gzserver9
|
85
docs/gear.md
Normal file
85
docs/gear.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# GEAR Simulation
|
||||||
|
|
||||||
|
## Running GEAR Container
|
||||||
|
|
||||||
|
1. Go to `docker_env` folder
|
||||||
|
- `cd /PATH/TO/RRRobot/docker_env`
|
||||||
|
2. Start GEAR docker container
|
||||||
|
- `docker-compose run --rm gear`
|
||||||
|
|
||||||
|
## Building & Running Sample Environment
|
||||||
|
|
||||||
|
1. Source ROS Setup
|
||||||
|
- `source /opt/ros/melodic/setup.bash`
|
||||||
|
<!-- 2. Go to rrrobot_ws folder in container
|
||||||
|
- `cd /app/rrrobot_ws`
|
||||||
|
3. Build package
|
||||||
|
- `catkin_make clean`
|
||||||
|
- `catkin_make`
|
||||||
|
- `catkin_make install` -->
|
||||||
|
2. Run sample environment
|
||||||
|
- `roslaunch osrf_gear sample_environment.launch`
|
||||||
|
|
||||||
|
## Controlling Sample Environment
|
||||||
|
|
||||||
|
While sample environment is running, open a new terminal (see tips & tricks section of [home](./home.md)) on the running docker container. The following sections provide a brief overview of the commands that can be used to control various aspects of the simulation. For a full list, check out the [ARIAC 2019 Wiki](https://bitbucket.org/osrf/ariac/wiki/2019/tutorials/gear_interface).
|
||||||
|
|
||||||
|
[sample_run.sh](../rrrobot_ws/src/gear/sample_run.sh) moves arm 1 over the gasket part, picks it up, moves it to AGV1's tray, drops it, and moves back to the starting position.
|
||||||
|
|
||||||
|
### Start Competition
|
||||||
|
|
||||||
|
`rosservice call /ariac/start_competition`
|
||||||
|
|
||||||
|
### Controlling Arms
|
||||||
|
|
||||||
|
#### Gripper
|
||||||
|
|
||||||
|
- Turn gripper suction on
|
||||||
|
- `rosservice call /ariac/arm1/gripper/control "enable: true"`
|
||||||
|
- Turn gripper suction off
|
||||||
|
- `rosservice call /ariac/arm1/gripper/control "enable: false"`
|
||||||
|
|
||||||
|
#### Joints
|
||||||
|
|
||||||
|
Move `arm1` over a gasket part
|
||||||
|
|
||||||
|
```
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 2}, \
|
||||||
|
positions: [0.15, 3.14, -1.570, 2.14, 3.1, -1.59, 0.126]}, \
|
||||||
|
{time_from_start: {secs: 4}, \
|
||||||
|
positions: [-0.35, 3.14, -0.6, 2.3, 3.0, -1.59, 0.126]}, \
|
||||||
|
{time_from_start: {secs: 6}, \
|
||||||
|
positions: [-0.35, 3.14, -0.5, 2.3, 3.05, -1.59, 0.126]}, \
|
||||||
|
]}" -1
|
||||||
|
```
|
||||||
|
|
||||||
|
Move part to `AGV1`'s tray
|
||||||
|
|
||||||
|
```
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 2}, \
|
||||||
|
positions: [0.0, 3.14, -1.570, 2.14, 3.27, -1.51, 0.0]}, \
|
||||||
|
{time_from_start: {secs: 5}, \
|
||||||
|
positions: [1.0, 1.85, 0, -0.38, 1.57, -1.51, 0.00]}, \
|
||||||
|
{time_from_start: {secs: 7}, \
|
||||||
|
positions: [1.0, 1.507, 0, -0.38, 0.38, -1.51, 0.00]}, \
|
||||||
|
{time_from_start: {secs: 10}, \
|
||||||
|
positions: [1.18, 1.507, 0.38, -0.38, 1.55, 1.75, 0.127]}, \
|
||||||
|
]}" -1
|
||||||
|
```
|
||||||
|
|
||||||
|
Return to starting position
|
||||||
|
|
||||||
|
```
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 5}, \
|
||||||
|
positions: [0.0, 3.14, -1.570, 2.14, 3.27, -1.51, 0.0]}, \
|
||||||
|
]}" -1
|
||||||
|
```
|
38
docs/home.md
38
docs/home.md
@@ -8,8 +8,9 @@
|
|||||||
- [Docker Compose Services](#docker-compose-services)
|
- [Docker Compose Services](#docker-compose-services)
|
||||||
- [GUI Support](#gui-support)
|
- [GUI Support](#gui-support)
|
||||||
- [Running Docker Containers](#running-docker-containers)
|
- [Running Docker Containers](#running-docker-containers)
|
||||||
- [Warehouse Simulation](#warehouse-simulation)
|
|
||||||
- [Gazebo Grasping Simulation](#gazebo-grasping-simulation)
|
- [Gazebo Grasping Simulation](#gazebo-grasping-simulation)
|
||||||
|
- [GEAR Simulation](#gear-simulation)
|
||||||
|
- [Tips & Tricks](#tips--tricks)
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
|
|
||||||
1. [Project Poster](1.%20Project%20Poster.pdf)
|
1. [Project Poster](1.%20Project%20Poster.pdf)
|
||||||
2. [Project Proposal](2.%20Project%20Proposal.pdf)
|
2. [Project Proposal](2.%20Project%20Proposal.pdf)
|
||||||
|
3. [Final Project - Overleaf (Read-Only)](https://www.overleaf.com/read/ncvksrzpvbmr)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
@@ -59,6 +61,10 @@ ros is the production container for all ROS nodes we create. This is meant to ru
|
|||||||
|
|
||||||
Similarly to ros, gazebo is the production container for gazebo. This is meant to run our final simulation.
|
Similarly to ros, gazebo is the production container for gazebo. This is meant to run our final simulation.
|
||||||
|
|
||||||
|
#### gear <!-- omit in toc -->
|
||||||
|
|
||||||
|
The GEAR container includes the Gazebo Environment for Agile Robotics from the Agile Robotics for Industrial Automation Competition 2019.
|
||||||
|
|
||||||
### GUI Support
|
### GUI Support
|
||||||
|
|
||||||
If using VcXsrv for Windows to enable GUI applications, run XLaunch using [config.xlaunch](utils/config.xlaunch). This will enable the following settings:
|
If using VcXsrv for Windows to enable GUI applications, run XLaunch using [config.xlaunch](utils/config.xlaunch). This will enable the following settings:
|
||||||
@@ -100,23 +106,6 @@ Additionally, be sure to update the `IP_ADDRESS` variable in [.env](src/.env) wi
|
|||||||
4. Use Docker Compose to run a service (refer to [docker-compose.yml](src/docker-compose.yml) or [Docker Compose Services](#docker-compose-services))
|
4. Use Docker Compose to run a service (refer to [docker-compose.yml](src/docker-compose.yml) or [Docker Compose Services](#docker-compose-services))
|
||||||
- `docker-compose run --rm <service_name>`
|
- `docker-compose run --rm <service_name>`
|
||||||
|
|
||||||
### Warehouse Simulation
|
|
||||||
|
|
||||||
1. Go to `docker_env` folder
|
|
||||||
- `cd /PATH/TO/RRRobot/docker_env`
|
|
||||||
2. Start gazebo docker container
|
|
||||||
- `docker-compose run --rm warehouse`
|
|
||||||
3. Source ROS Setup
|
|
||||||
- `source /opt/ros/melodic/setup.bash`
|
|
||||||
4. Go to warehouse folder in container
|
|
||||||
- `cd /app/rrrobot_src/warehouse`
|
|
||||||
5. Build package
|
|
||||||
- `catkin_make clean`
|
|
||||||
- `catkin_make`
|
|
||||||
- `catkin_make install`
|
|
||||||
6. Run sample environment
|
|
||||||
- `roslaunch osrf_gear sample_environment.launch`
|
|
||||||
|
|
||||||
### Gazebo Grasping Simulation
|
### Gazebo Grasping Simulation
|
||||||
|
|
||||||
1. Source ROS Setup
|
1. Source ROS Setup
|
||||||
@@ -129,3 +118,16 @@ Additionally, be sure to update the `IP_ADDRESS` variable in [.env](src/.env) wi
|
|||||||
4. Run the gazebo simulator - this will bring up gazebo with a robotic arm
|
4. Run the gazebo simulator - this will bring up gazebo with a robotic arm
|
||||||
- `gazebo /app/rrrobot_src/world/rrrobot.world`
|
- `gazebo /app/rrrobot_src/world/rrrobot.world`
|
||||||
5. Run control and perception programs
|
5. Run control and perception programs
|
||||||
|
|
||||||
|
### GEAR Simulation
|
||||||
|
|
||||||
|
Instructions for working in the GEAR Simulation can be found on the [GEAR](gear.md) page.
|
||||||
|
|
||||||
|
### Tips & Tricks
|
||||||
|
|
||||||
|
- Clear space on docker machine
|
||||||
|
- `docker system prune --volumes`
|
||||||
|
- See running containers
|
||||||
|
- `docker ps`
|
||||||
|
- Attach a new terminal to a running container
|
||||||
|
- `docker exec -it <container> bash`
|
||||||
|
@@ -1,67 +0,0 @@
|
|||||||
# toplevel CMakeLists.txt for a catkin workspace
|
|
||||||
# catkin/cmake/toplevel.cmake
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.0.2)
|
|
||||||
|
|
||||||
set(CATKIN_TOPLEVEL TRUE)
|
|
||||||
|
|
||||||
# search for catkin within the workspace
|
|
||||||
set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND ${_cmd}
|
|
||||||
RESULT_VARIABLE _res
|
|
||||||
OUTPUT_VARIABLE _out
|
|
||||||
ERROR_VARIABLE _err
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
if(NOT _res EQUAL 0 AND NOT _res EQUAL 2)
|
|
||||||
# searching fot catkin resulted in an error
|
|
||||||
string(REPLACE ";" " " _cmd_str "${_cmd}")
|
|
||||||
message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# include catkin from workspace or via find_package()
|
|
||||||
if(_res EQUAL 0)
|
|
||||||
set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake")
|
|
||||||
# include all.cmake without add_subdirectory to let it operate in same scope
|
|
||||||
include(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE)
|
|
||||||
add_subdirectory("${_out}")
|
|
||||||
|
|
||||||
else()
|
|
||||||
# use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument
|
|
||||||
# or CMAKE_PREFIX_PATH from the environment
|
|
||||||
if(NOT DEFINED CMAKE_PREFIX_PATH)
|
|
||||||
if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
|
|
||||||
if(NOT WIN32)
|
|
||||||
string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
|
|
||||||
else()
|
|
||||||
set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# list of catkin workspaces
|
|
||||||
set(catkin_search_path "")
|
|
||||||
foreach(path ${CMAKE_PREFIX_PATH})
|
|
||||||
if(EXISTS "${path}/.catkin")
|
|
||||||
list(FIND catkin_search_path ${path} _index)
|
|
||||||
if(_index EQUAL -1)
|
|
||||||
list(APPEND catkin_search_path ${path})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# search for catkin in all workspaces
|
|
||||||
set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE)
|
|
||||||
find_package(catkin QUIET
|
|
||||||
NO_POLICY_SCOPE
|
|
||||||
PATHS ${catkin_search_path}
|
|
||||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
|
|
||||||
unset(CATKIN_TOPLEVEL_FIND_PACKAGE)
|
|
||||||
|
|
||||||
if(NOT catkin_FOUND)
|
|
||||||
message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
catkin_workspace()
|
|
Submodule rrrobot_src/warehouse/src/ariac deleted from 0fb5984fb2
Submodule rrrobot_src/warehouse/src/ariac-gazebo_ros_pkgs deleted from 2b4816ac70
0
rrrobot_src/build.sh → rrrobot_ws/build.sh
Executable file → Normal file
0
rrrobot_src/build.sh → rrrobot_ws/build.sh
Executable file → Normal file
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
62
rrrobot_ws/src/gear/sample_run.sh
Normal file
62
rrrobot_ws/src/gear/sample_run.sh
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Start Competition
|
||||||
|
rosservice call /ariac/start_competition
|
||||||
|
|
||||||
|
# Wait
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# Move arm1 over a gasket part
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 2}, \
|
||||||
|
positions: [0.15, 3.14, -1.570, 2.14, 3.1, -1.59, 0.126]}, \
|
||||||
|
{time_from_start: {secs: 4}, \
|
||||||
|
positions: [-0.35, 3.14, -0.6, 2.3, 3.0, -1.59, 0.126]}, \
|
||||||
|
{time_from_start: {secs: 6}, \
|
||||||
|
positions: [-0.35, 3.14, -0.5, 2.3, 3.05, -1.59, 0.126]}, \
|
||||||
|
]}" -1
|
||||||
|
|
||||||
|
# Wait for arm to move
|
||||||
|
sleep 8
|
||||||
|
|
||||||
|
# Turn gripper suction on
|
||||||
|
rosservice call /ariac/arm1/gripper/control "enable: true"
|
||||||
|
|
||||||
|
# Wait for suction
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# Move part to AGV1's tray
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 2}, \
|
||||||
|
positions: [0.0, 3.14, -1.570, 2.14, 3.27, -1.51, 0.0]}, \
|
||||||
|
{time_from_start: {secs: 5}, \
|
||||||
|
positions: [1.0, 1.85, 0, -0.38, 1.57, -1.51, 0.00]}, \
|
||||||
|
{time_from_start: {secs: 7}, \
|
||||||
|
positions: [1.0, 1.507, 0, -0.38, 0.38, -1.51, 0.00]}, \
|
||||||
|
{time_from_start: {secs: 10}, \
|
||||||
|
positions: [1.18, 1.507, 0.38, -0.38, 1.55, 1.75, 0.127]}, \
|
||||||
|
]}" -1
|
||||||
|
|
||||||
|
# Wait for arm to move
|
||||||
|
sleep 12
|
||||||
|
|
||||||
|
# Turn gripper suction off
|
||||||
|
rosservice call /ariac/arm1/gripper/control "enable: false"
|
||||||
|
|
||||||
|
# Wait for suction
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# Return to starting position
|
||||||
|
rostopic pub /ariac/arm1/arm/command trajectory_msgs/JointTrajectory "{joint_names: \
|
||||||
|
['linear_arm_actuator_joint', 'shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'], \
|
||||||
|
points: [ \
|
||||||
|
{time_from_start: {secs: 5}, \
|
||||||
|
positions: [0.0, 3.14, -1.570, 2.14, 3.27, -1.51, 0.0]}, \
|
||||||
|
]}" -1
|
||||||
|
|
||||||
|
# Wait for arm to move
|
||||||
|
sleep 7
|
Reference in New Issue
Block a user