Skip to content

Commit

Permalink
Release 0.5.0.
Browse files Browse the repository at this point in the history
Build 3 - CERT Release. Prepared for CERT testing and upgraded
simulator.
  • Loading branch information
bcoltin committed Oct 17, 2018
1 parent 06c4d80 commit d4c05f6
Show file tree
Hide file tree
Showing 697 changed files with 14,076 additions and 5,696 deletions.
11 changes: 6 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
#
# All rights reserved.
#
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
#
# http://www.apache.org/licenses/LICENSE-2.0
#
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
Expand All @@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.0)
project(Astrobee)
set(ASTROBEE_VERSION_MAJOR 0)
set(ASTROBEE_VERSION_MINOR 4)
set(ASTROBEE_VERSION_MINOR 5)

if ( "${CMAKE_VERSION}" VERSION_GREATER 3.0.0 )
cmake_policy(SET CMP0045 OLD)
Expand Down Expand Up @@ -287,6 +287,7 @@ include(CreateRosTestTargets)
include(CreateTestTargets)
include(CreateToolTargets)
include(ExternalProjects)
include(FetchContent)
include(InstallLaunchFiles)

add_subdirectory(external)
Expand Down
3 changes: 3 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ Next, install all required dependencies:
rosdep update
popd

### Have System Monitor Ignore DDS ROS Bridge
Since external users do not have access to our internal dds repository, they will not be running or compiling our DDS ROS Bridge. The system monitor needs to be told that the bridge isn't running so that it doesn't assert bridge heartbeat missed faults. In order to do this, please open $SOURCE_PATH/astrobee/config/robots/sim.config and add "dds_ros_bridge" to the nodes_not_running list the end of the file. If an external user doesn't do this, they will see a "Never received heartbeat from dds_ros_bridge" error which will not cause any issues but can be slightly annoying.

## Configuring the build

### Note for the build setup
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ information.
If you are a non-NASA user, please checkout the astrobee_android nasa github
project (if you followed the usage instructions, you should have checked this
out already). Once that is checked out, please see
[`guest_science/readme.md`](https://github.com/nasa/astrobee_android/blob/HEAD/guest_science/readme.md)
[`guest_science/readme.md`](https://github.com/nasa/astrobee_android/blob/master/guest_science/README.md)
located in the `astrobee_android/guest_science folder`.

If you are a NASA user, please make sure the `android` submodule was checked out
Expand Down
7 changes: 7 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Astrobee Robot Software v1

## Release 0.5.0

Build 3 - CERT Release

- Everything ready for CERT testing
- Improved simulator

## Release 0.4.5

Updated external user install instructions.
Expand Down
15 changes: 11 additions & 4 deletions astrobee/config/cameras.config
Original file line number Diff line number Diff line change
Expand Up @@ -94,15 +94,22 @@ picoflexx = {
topic = "perch", -- frame
device = robot_perch_cam_device, -- camera uuid ("" : automatic)
exposure = 0, -- exposure time (0: automatic)
mode = "MODE_9_5FPS_2000" -- use case
mode = "MODE_9_5FPS_2000", -- use case
required = true -- is camera required
},{
name = "haz_cam", -- frame
topic = "haz", -- frame
device = robot_haz_cam_device, -- camera uuid ("" : automatic)
exposure = 0, -- exposure time (0: automatic)
mode = "MODE_9_5FPS_2000" -- use case
mode = "MODE_9_5FPS_2000", -- use case
required = true -- is camera required
},{
name = "test_cam", -- special name
topic = "test", -- frame
device = "0005-4805-0050-1520", -- camera uuid ("" : automatic)
exposure = 0, -- exposure time (0: automatic)
mode = "MODE_5_45FPS_500", -- use case
required = false -- is camera required
}
}
}


10 changes: 10 additions & 0 deletions astrobee/config/communications/dds_ros_bridge.config
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ pub_topic_RGCTRGCT = "-traj"
use_RGSRGS = true
pub_topic_RGSRGS = ""

-- ros_log_rapid_log_sample => RLRLS --
use_RLRLS = true
pub_topic_RLRLS = ""

-- ros_odom_rapid_position => RORP --
use_RORP = true
pub_topic_RORP = ""
Expand All @@ -128,19 +132,25 @@ pub_topic_RORP = ""
use_RPSRPS = true
pub_topic_RPSRPS = ""

-- ros_pmc_cmd_state_rapid_pmc_cmd_state => RPCSRPCS --
use_RPCSRPCS = true
pub_topic_RPCSRPCS = ""

-- ros_string_rapid_text_message => RSRTM --
use_RSRTM = false

-- ros_telemetry_rapid_telemetry => RTRT --
use_RTRT = true
pub_topic_RTRT = ""


comm_status_rate = 1
cpu_state_rate = 0
disk_state_rate = 1
ekf_state_rate = 0
gnc_state_rate = 0
position_rate = 30
pmc_command_rate = 0

battery_time_round_to_multiple = 10;

Expand Down
120 changes: 120 additions & 0 deletions astrobee/config/dock_markers_world.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
-- Copyright (c) 2017, United States Government, as represented by the
-- Administrator of the National Aeronautics and Space Administration.
--
-- All rights reserved.
--
-- The Astrobee platform is licensed under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with the
-- License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-- License for the specific language governing permissions and limitations
-- under the License.

--[[
Computes the locations of the AR markers on the dock in World
frame from the location of the makers defined on the target plate.

AR targets are currently caraterized by the positions of three
corners. The naming refering the a coordinate system attached
to the marker itself when printed using generate_svg_markers:
- top left
- top right
- bottom left

The markers (from dock_markers_specs.config) are expressed in a 2D coordinate
system facilitating the printing (X to the right, Y going down).

We define a dock frame as follow:
- origin: coincide with the origin of the target drawing
(mid-point between the two berth bases)
- X normal to the target plate, positive in the egress
direction
- Z along the short side of the target plate, positive down (if
looking at the drawing)
- Y is thus

We start by placing the markers from the drawing coordinates
into the dock frame. Then we apply a transform to find the
marker coordinates in world frame by using the dock location in the world.

The dock location is defined in the "world" config with:
- world_dock_position
- world_dock_orientation
If using this file without a context + world, these two variable should be
first defined.

--]]

require "context"
require "rotations"
local matrix = require 'matrix'

require "dock_markers_specs"

-- Compute the corners of a marker in dock frame in function of its
-- size and position in 2D target frame
function marker_corners(m, scale)
-- express corners in dock frame (see intro)
top_left = scale * matrix{0.0, -m['pos'][1], m['pos'][2]}
top_right = top_left + scale * matrix{0.0, -m['size'], 0.0}
bottom_left = top_left + scale * matrix{0.0, 0.0, m['size']}
return top_left, top_right, bottom_left
end

-- Units transformation
if ( drawing_unit == "mm") then
-- print("tagets drawing expressed in millimeters")
scale_factor = 0.001
elseif ( drawing_unit =="in") then
-- print("targets drawing are expressed in inches")
scale_factor = 0.0254
else
print("Warning: targets drawing unit not defined or not recognized")
print(" assume meters")
scale_factor = 1.0
end


-- Processing
markers_world = {}
for k,v in pairs(markers) do
marker_in_world = {}
top_left, top_right, bottom_left = marker_corners(v, scale_factor)
marker_in_world['id'] = v['id']
-- Edited by Andrew to put dock markers in DOCK frame not WORLD frame, since
-- the EKF now works in a local frame AND that having the features in the
-- DOCK frame allows us to use the feature messages for etrinsic calibration.
top_left_world = top_left
top_right_world = top_right
bottom_left_world = bottom_left
-- corners results are in Matrix form, transpose them back into a table
marker_in_world['top_left'] = {
top_left_world[1][1], top_left_world[2][1], top_left_world[3][1] }
marker_in_world['top_right'] = {
top_right_world[1][1], top_right_world[2][1], top_right_world[3][1] }
marker_in_world['bottom_left'] = {
bottom_left_world[1][1], bottom_left_world[2][1], bottom_left_world[3][1] }
table.insert(markers_world, marker_in_world)
end

--[[
-- Simple utility function to print a 3x1 matrix as a vector
function print_vec3(v, str)
-- TODO should check the size first
print(string.format("%s=(%.3f, %.3f, %.3f)",
str, v[1], v[2], v[3]))
end

for k,v in pairs(markers_world) do
print("-------- marker", k)
print(string.format("id=%d", v['id']))
print_vec3(v['top_left'], "top_left")
print_vec3(v['top_right'], "top_right")
print_vec3(v['bottom_left'], "bottom_left")
end
--]]
2 changes: 1 addition & 1 deletion astrobee/config/geometry.config
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ function berth_transform(sign, tilt)
end

-- Various constants for docking
freeflyer_length = 0.150
freeflyer_length = 0.163
freeflyer_reach = 0.150
approach_dist = 0.500

Expand Down
1 change: 1 addition & 0 deletions astrobee/config/hw/eps_driver.config
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ en_srv_clear_terminate = true

-- Configure telemetry information
en_pub_housekeeping = true
en_pub_power = true
en_pub_battery_status = true
en_pub_dock_state = true
dock_check_rate = 5
Expand Down
3 changes: 2 additions & 1 deletion astrobee/config/hw/pmc_actuator.config
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ i2c_bus_file = "/dev/i2c-2"

-- 7-bit I2C addresses for the PMCs
-- Users should provide 'num_pmcs' (or more) addresses for all PMCs
i2c_addrs = {0x20, 0x21}
-- Order switched to work on CERT
i2c_addrs = {0x21, 0x20}

-- Number of I2C retries when device not acknowledging
i2c_retries = 3
Expand Down
49 changes: 29 additions & 20 deletions astrobee/config/mobility/choreographer.config
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
-- License for the specific language governing permissions and limitations
-- under the License.

-- Declare the variables above as reconfigurable
require "context"

parameters = {
-- PLANNING
{
Expand Down Expand Up @@ -44,7 +45,7 @@ parameters = {
-- mapper prior to being executed. This avoids us from applying control
-- that drives us into keep-in zones or obstacles.
id = "enable_validation", reconfigurable = true, type = "boolean",
default = false, unit = "boolean",
default = true, unit = "boolean",
description = "Should we validate segments before executing them"
},{
-- In the case of an EXECUTE command the platform's pose might not
Expand Down Expand Up @@ -142,6 +143,22 @@ parameters = {
default = 1.0, min = 1.0, max = 62.5, unit = "rad/s/s",
description = "Desired control frequency"
},
-- ALREADY THERE TOLERANCES
{
-- When a move request is made we need to check if the sequence of poses
-- are close to our current pose. In this case we don't have to plan or
-- even move, and we return an ALREADY_THERE success response.
id = "tolerance_pos", reconfigurable = true, type = "double",
default = 0.05, min = 0.0, max = 1.0, unit = "m",
description = "Position tolerance for checking if we are already at pose"
},{
-- When a move request is made we need to check if the sequence of poses
-- are close to our current pose. In this case we don't have to plan or
-- even move, and we return an ALREADY_THERE success response.
id = "tolerance_att", reconfigurable = true, type = "double",
default = 0.0872665, min = 0.0, max = 3.1415, unit = "rads",
description = "Atttitude tolerance for checking if we are already at pose"
},
-- SPEED GAIN TIMEOUT
{
id = "timeout_speed_gain", reconfigurable = false, type = "double",
Expand Down Expand Up @@ -174,22 +191,6 @@ parameters = {
id = "timeout_control_response", reconfigurable = false, type = "double",
default = 1.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which control feedback/response must be received"
},{
id = "timeout_validate_connected", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which the validate action must be connected to"
},{
id = "timeout_validate_active", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which a validate goal must go active"
},{
id = "timeout_validate_response", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which validate feedback/response must be received"
},{
id = "timeout_validate_deadline", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which validate response must be received"
},{
id = "timeout_plan_connected", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
Expand All @@ -206,6 +207,14 @@ parameters = {
id = "timeout_plan_deadline", reconfigurable = false, type = "double",
default = 10.0, min = 0.1, max = 10, unit = "seconds",
description = "Time by which plan response must be received"
-- PLANNER
-- VALIDATOR
},{
id = "zone_file", reconfigurable = false, type = "string",
default = world_zone_file, unit = "not applicable",
description = "Which zone file should be used?"
},{
id = "zone_overwrite", reconfigurable = false, type = "boolean",
default = true, unit = "boolean",
description = "Allow new zones to overwrite the zone file"
}
}
}
Loading

0 comments on commit d4c05f6

Please sign in to comment.