While creating the new carla ros bridge some extensions became necessary
within CARLA:
The parent property of an actor via python interface is not yet filled.
Therefore, the parent_id of Actors has to be transferred from the CARLA
server via rpc interface.
In addition, actor attributes are published via python interface.
Changes in detail:
carla/rpc/Actor.h:
- add parent_id field to the Actor class for rpc transport
TheNewCarlaServer.cpp:
- fill the parent_id field with the appropriate value
client/ActorList:
- added GetActor() function to get an actor by id
client/ActorVariant:
- added actor_list optional parameter to Get() and MakeActor() function
which allows to query for the parent actor in case the actor_list is
available
client/ActorAttribute:
- solved problem of independent rpc::ActorAttribute* classes by
introduction of ActorAttributeValueAccess class, to be able to reuse
most of the functions for both ActorAttribueValues and ActorAttributes
ActorBlueprintFunctionLibrary:
- extended actor attributes by attribute 'role_name' having {autopilot,
scenario, ego_vehicle} as recommended values for vehicles or
{front,back,...} for sensors to be able to distiguish the different
actors in a meaningful way when transferring to ROS topic names
- extended vehicle attributes by not-modifiable attribute 'object_type'
to be defined at blueprint creation time to provide ground truth
object classification type
PythonAPI:
- libcarla: provide the actor attributes within python as dictionary
- make use of role_name attribute to provide information required for
ROS bridge to distinguish ego vehicle from others
Depending on the include header sometimes the error is {instrinsic funtion} is not a member of {class name} and other times it seems some Unreal functions as GetObject was replaced by the GetObjectW macro.